![]() |
Delphi-Version: XE2
Threads in Listbox verwalten
Hallo zusammen,
wie verwalte ich mehrere Threads über eine Listbox? ... so starte ich (vereinfacht dargestellt):
Code:
... das Stoppen ausgewählter Threads haut noch nicht hin ?!?
var
xThread: TMyThread; procedure TForm1.ButtonStartClick(Sender: TObject); begin xThread := TMyThread.Create; xThread.FreeOnTerminate := True; inc(iTNr); xThread.Nr := iTNr; xThread.Id := xThread.ThreadID; //nur zur Thread Unterscheidung xThread.Start; ListBox1.Items.AddObject('Thread ' + IntToStr(iTNr), xThread); ...
Code:
Wie komme ich da an das hinterlegte Objekt? (hab da was von Casten gelesen, kann es aber in der Syntax nicht umsetzen)
procedure TForm1.ButtonStopClick(Sender: TObject);
begin if ListBox1.ItemIndex > -1 then begin xThread.Terminate; //stoppt nur den letzten!!! ListBox1.Items.Delete(ListBox1.ItemIndex); ... Gruß MarLe |
AW: Threads in Listbox verwalten
Wenn Du das Objekt mit
Delphi-Quellcode:
in der ListBox hinterlegst, müsstest Du mit
ListBox1.Items.AddObject('Thread ' + IntToStr(iTNr), xThread);
Delphi-Quellcode:
wieder herankommen.
(ListBox1.Items.Objects[ListBox1.ItemIndex] as TMyThread)
|
AW: Threads in Listbox verwalten
Mit casten meinst du wahrscheinlich so:
Delphi-Quellcode:
xThread := TMyThread(ListBox1.Items.Objects[ListBox1.ItemIndex]);
xThread.Terminate; |
AW: Threads in Listbox verwalten
Funzt Danke, so habe ich es jetzt stehen:
Code:
Was mich jetzt wundert dass er damit auch gleich den Eintrag aus der ListBox nimmt?!?
(ListBox1.Items.Objects[ListBox1.ItemIndex] as TMyThread).Terminate;
Gruß MarLe |
AW: Threads in Listbox verwalten
Am besten ist es natürlich so etwas nicht mit einer ListBox zu verwalten.
Dafür schafft man sich einen Kontext, der auch länger als das Formular lebt und verwaltet die Threads dort. Wenn man das jetzt in einer ListBox anzeigen möchte, nun einfach machen ... aber direkt damit koppeln ist immer der Anfang vom Ende ;) |
AW: Threads in Listbox verwalten
Zitat:
Delphi-Quellcode:
ListBox1.Items.Delete(ListBox1.ItemIndex);
|
AW: Threads in Listbox verwalten
Zitat:
Zitat:
Ich will mich ja steigern, der nächste Versuch wäre die Verwaltung über eine ObjectList. Da gibt es ja eine alte und eine neue mit Generics, typsicher habe ich gelesen. Hast du da vielleicht ein Anschauungsbeispiel wie man das richtig macht. Ich will eigentlich nur x-Threads starten, aber gezielt einzelene wieder stoppen. Mir geht's jetzt mehr ums Verständnis wie man das sauber macht. Gruß MarLe |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 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