Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: Deadlock beim stoppen eines Arbeiter Threads

  Alt 12. Mär 2007, 10:36
Dein 'StoppBackgroundTask' sollte ein 'ResetEvent' aufrufen und der Thread per 'WaitForSingleObject' prüfen, ob er laufen darf:

Delphi-Quellcode:
Procedure TMyThread.Execute;
Begin
  While not Terminated Do
    Case WaitForsingleObject (fMyEvent...) Of
      WAIT_OBJECT_0 :
        ExecuteNextJob;
      WAIT_TIMEOUT :
        HandleTimeout;
      WAIT_ABANDONED :
        <Thread wurde beim Warten abgeschossen / beendet>
    End;
End;


Procedure TMyThread.PleaseStop;
Begin
  fMyEvent.ResetEvent;
End;
Ungetestet, aber so in etwa sollte das funktionieren.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat