![]() |
Überprüfen, ob ein TListItem existiert???
Hallo!
Beim erstellen eines Threads wird ein TListItem erstellt und mit dem Thread verknüpft, damit der Thread die Änderungen in diesem Item vornehmen kann. Etwa so:
Code:
Der Thread kann dan problemlos auf den Item zugreifen und Daten ändern.
...
var Item: TListItem; Thread: TThread; begin Item := ListView1.Items.Add; Thread := MyThread.Create(true, Item) //dabei ist beim Thread der Create-constructor natürlich überschrieben Item.Caption := 'Irgendwas'; Item.Data := Pointer(Thread); Thread.Resume; ... Wie kann ich im Thread überprüfen, ob Item in der ListView noch vorhanden ist, ich meine noch nicht gelöscht wurde? :oops: Danke! MfG, Ralfi |
Re: Überprüfen, ob ein TListItem existiert???
Zitat:
Beim Löschen eines Items musst du 1.) den Thread terminieren und 2.) den Thread freigeben (falls du FreeOnTerminate nicht gesetzt hast)
Delphi-Quellcode:
Im Thread musst du obacht geben und nur auf das Item zugreifen, wenn der Thread noch nicht Terminiert ist:
procedure DelItem(Item: TListItem);
var Thread: TThread; begin Thread:=TThread(Item.Data); if Assigned(Thread) then begin Thread.Terminate; Thread.Free; // nur wenn FreeOnTerminate=False end; end;
Delphi-Quellcode:
if Terminated then
Exit; // Execute verlassen, wenn Thread terminiert ist // Thread ist nicht terminiert, also darf ich auf das Item zugreifen FItem.Caption := 'working ' +IntToStr(x); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 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