Witam...
Mam tak zadeklarowaną klasę w Unit Watki:
type
TWatek = class(TThread)
protected
procedure Execute; override;
end;
implementation
uses Wyszukiwanie, MainForm;
procedure TWatek.Execute;
var
Wysz: TWyszukiwanie;
begin
FreeOnTerminate:=true;
Wysz:=TWyszukiwanie.Create(MainForm.Tekst, MainForm.InBool, MainForm.AllBool);
Wysz.Wyszukaj;
Wysz.Free;
end;
W formie głównej mam tak:
Uses Watki;
var
Watek: TWatek;
procedure TForm1.WyszukajClick(Sender: TObject);
begin
Watek.Resume;
end;
procedure TForm1.WstrzymajClick(Sender: TObject);
begin
Watek.Suspend;
end;
procedure TForm1.EditSearchChange(Sender: TObject);
begin
if not Watek.Suspended then begin //Tu już nie wiem jak napisać
Watek.Terminate; //Kombinowałem na różne sposoby
Watek.Free;
Watek:=TWatek.Create(True);
end;
end;
end;
initialization
Watek:=TWatek.Create(True);
W procedurze EditSearchChange chciałbym, aby po zmianie tekstu, wątek był tworzony jeszcze raz i przy wywołaniu Watek.Resume wykonywała się procedura Execute od początku.
Inny problem pojawia się gdy w trakcie działania wątku lub po jego wstrzymaniu zamykam formę. Jeżeli w sekcji finalization nie ma linii Watek.Free to wyskakuje mi błąd Access Volation, jeżeli jest to błąd "Nieprawidłowe dojście okna".
Pzdr