AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Thread beenden und auf ihn warten

Ein Thema von Brainstalker · begonnen am 22. Dez 2005 · letzter Beitrag vom 11. Mär 2017
 
jenbru

Registriert seit: 23. Dez 2005
5 Beiträge
 
Delphi 7 Professional
 
#2

Re: Thread beenden und auf ihn warten

  Alt 23. Dez 2005, 07:06
Guten Morgen,

ich mach das immer so:

Delphi-Quellcode:
...
const
 TIMEOUT = 200; //ms
...

//Thread zur Terminierung auffordern
Thrd.Terminate;
while (True) do
  begin
  //Thread benachrichtigen und warten
  WaitResult:= WaitForSingleObject(Thrd.Handle,TIMEOUT);
  if WaitResult = WAIT_FAILED then
    RaiseLastOSError;
  //Thread signalisiert -> Ausgang
  if WaitResult = WAIT_OBJECT_0 then
    break;
  //Application.ProcessMessages;
end;
Thrd.Free;

Wenn man im Hauptthread wartet muss man sicherstellen, dass dieser nicht lange blockiert. Deshalb packe ich das WaitForSingleObject in eine Schleife und warte immer nur kurz. Wenn der Thread benachrichtigt wurde wird die Schleife verlassen. Damit das Ganze funktioniert, muss man sicherstellen, dass das Thread-Handle auch nach Terminierung noch gueltig
bleibt. Dazu gibt man bei Erzeugung des Threads folgendes an:

Thrd.FreeOnTerminate:= False; Damit man nicht ewig wartet (falls der Thread in irgendeiner Form in einen Deadlock gelaufen ist), sollte man als Abbruchkriterium
für die Warteschleife vielleicht noch eine maximale Wartezeit vorgeben.

Hoffe ich konnte weiterhelfen.
Schoenen Gruß,
Jens
Jens Brünnler
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:09 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