![]() |
Threads richtig beenden, wie? <<Solved>>
Hallo zusammen,
ich möchte einen thread beenden den ich zuvor hiermit gestartet habe:
Delphi-Quellcode:
der thread führt folgendes aus:
T:=TNetThread.create(false);
T.Resume;
Delphi-Quellcode:
beendet sollte er hiermit werden:
procedure TNetThread.Execute;
begin ... while not terminated do Winsock_listen; //steht für die listen funktion von winsock end;
Delphi-Quellcode:
Dies funktioniert allerdings nicht, der thread bleibt in der schleife hängen, auch wenn der benutzte socket mit
T.Suspend;
T.Terminate; T.free;
Delphi-Quellcode:
beendet wird.
closesocket(s);
Dieser wird auch tatsächlich geschlossen! Bitte um hilfe. Danke schonmal an alle Hilfsbereiten! |
Re: Threads richtig beenden, wie?
Du musst das Terminate setzen,
Dann warten bis der Thread Terminiert ist. Das Suspend ist dann meiner Meinung nach Überflüssig. mfG Markus EDIT: Alternativ machst du FreeOnTerminate auf true und gibst dann das Temrinate-Kommando. |
Re: Threads richtig beenden, wie?
Ein Thread hat selbstständig mitzukriegen, wann er terminiert wird. Von daher ist ein .Suspend eher kontraproduktiv: es hält den Thread an. Lässt du es weg, läuft er weiter, kriegt nen Listen-Timeout und springt aus der While-Schleife raus. Wenn danach nix mehr kommt, killt sich der Thread.
|
Re: Threads richtig beenden, wie?
Zitat:
Aber in deinem Fall ist es wahrscheinlich besser so: (was markusj schon angeschnitten hat)
Delphi-Quellcode:
Dann brauchst du zum beenden nur noch:
T:=TNetThread.create(false);
T.FreeOnTerminate := true; T.Resume;
Delphi-Quellcode:
Dann wird er nämlich automatisch freigegeben :wink:
T.Terminate;
//edit: Mist zu spät aber wo war die rote Box? |
Re: Threads richtig beenden, wie?
*hüstel*
Ich schreib SUSPEND! nicht RESUME ... Wenn er den Thread einschläfert, kann der nicht merh reagieren ... SUSPEND = Einfschläfern ... mfG Markus |
Re: Threads richtig beenden, wie?
Danke für die Hilfe!
Das
Delphi-Quellcode:
hat geholfen
T.FreeOnTerminate := true;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz