Hvordan sikre man at en tråd er afsluttet ?
I en tråd har jeg nedenståendekode, IKoden er en global variabel
Der er tale om en driver som skal stå at hente data
på fulde \"knald\", når tråden har kørt 500-600 gange
får jeg fejlen, muligvis fordi tråden er startet en ekstra gang uden at være afsluttet
procedure TColNWPoll.GetData;
begin
if IKoden then
ShowMessage(\'Fejl er i koden\');
IKoden := True;
IKoden := False;
OnDataEvent(FNWPollData);
end;
Jeg starter tråden igen på mit Terminateevent
med følgende kode:
procedure TFormCallDriver.Termination(Sender: TObject);
begin
if (NWPoll = nil) then
Exit;
{NWPoll.Terminate;
NWPoll.WaitFor;}
FreeAndNil(NWPoll);
if chkboxHurtig.Checked then
begin
Timer1.Interval := 1000000;
ButGetDataClick(Sender);
end;
end;
og ButGetDataClick ser ud som følger:
procedure TFormCallDriver.ButGetDataClick(Sender: TObject);
begin
if not IdTCPClient.Connected then
begin
ShowMessage(\'Connect first !!!!!!!!!!\');
exit;
end;
NWPoll := TColNWPoll.Create;
With NWPoll do
begin
OnDataEvent := WriteData;
OnStateEvent := WriteState;
OnStatusEvent := WriteStatus;
OnTerminate := Termination;
FClientSocket := IdTCPClient;
WriteDelay := 350;
TimeOut := 2000;
Resume;
end;
end;
