Avatar billede morten_s Nybegynder
13. december 2001 - 16:05 Der er 1 løsning

Hvordan sikre man at en tråd er afsluttet ?

I en tråd har jeg nedenstående
kode, 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;
Avatar billede morten_s Nybegynder
13. december 2001 - 19:45 #1
fandt fejlen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester