![]() |
Re: Mehrere Threads gleichzeitig...
Ich würde es so machen:
Delphi-Quellcode:
Im Thread die Eigenschaft Terminated auswerten und die Bearbeitung beenden.
procedure TBeispielForm.Button2Click(Sender: TObject);
var i: Integer; begin for i := 1 to Cnt do begin if Thr[lvCounter] <> nil then begin Thr[i].Terminate; Thr[i].WaitFor; Thr[i].Free; Thr[i]:=nil; end; end; end; |
Re: Mehrere Threads gleichzeitig...
Zitat:
man muss offensichtlich while not Terminated do machen und nicht while not BR do und BR dann im OnTerminate auf True setzen...das geht irgendwie nicht :( |
Re: Mehrere Threads gleichzeitig...
Genau ... was ist BR ?
Also zusammenfassend:
Delphi-Quellcode:
Das wärs, oder ?
Thr: array [1..Cnt] of TMyThread;
procedure TForm1.Button1Click(Sender: TObject); var i:Integer; begin for i:=1 to Cnt do begin Thr[i] := TMyThread.Create(True); Thr[i].FreeOnTerminate := True; // Nochwas machen Thr[i].Resume; end; end; for i := 1 to Cnt do begin if Thr[i] <> nil then begin Thr[i].Terminate; Thr[i] := nil; end; end; |
Re: Mehrere Threads gleichzeitig...
FreeOnTerminate ist zwar eine Möglichkeit, jedoch nicht ganz ungefährlich. Dadurch verliehrt man die Kontrolle, ob bzw. wann der Thread beendet ist. Lässt man diese Procedure zum Beenden der Threads beim Beenden des Programms oder eines Dienstes laufen, kann das zu unschönen Effekten führen, wenn die Threads noch nicht beendet sind.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:01 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 by Thomas Breitkreuz