![]() |
Grafische Ausgabe aus einem Thread heraus
Hallo,
ich weiß, dass man in Threads nicht auf die GUI zugreifen darf und dies nur im Synchronize() Abschnitt bewerkstelligen soll. Wie bekomme ich es aber hin, dass Ausgaben während des Thread Ablaufs möglich sind? Der nachfolgende Code ist jetzt ein simples Beispiel. In meinem Fall dauert der Thread ca. 5 Sekunden. In der Zeit soll ausgegeben werden, an welcher Stelle der Abarbeitung die App sich gerade befindet.
Delphi-Quellcode:
Danke.
procedure TForm1.btn1Click(Sender: TObject);
begin TThread.CreateAnonymousThread(procedure () begin for var i: integer := 0 to 1000 do begin lblOutput.Text := i.ToString; // problematische Ausgabe end; TThread.Synchronize (TThread.CurrentThread, procedure () begin lblOutput.Text := 'Finished'; end); end).Start; end; |
AW: Grafische Ausgabe aus einem Thread heraus
.. geht auf iOS sendMessage, postMessage oder events?
Grüße Klaus |
AW: Grafische Ausgabe aus einem Thread heraus
Genauso wie skizziert mit Synchronize.
Man muss ja nicht jeden Quatsch synchronisieren und nur jede zweite bis zehnte Änderung der GUI mitteilen. |
AW: Grafische Ausgabe aus einem Thread heraus
Ich habe es nun selbst herausgefunden. TThread.Queue() ist die Lösung :thumb:
Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
begin TThread.CreateAnonymousThread(procedure () begin for var i: integer := 0 to 1000 do begin TThread.Queue(nil, procedure begin lblOutput.Text := i.ToString; // problematische Ausgabe end); end; TThread.Synchronize(TThread.CurrentThread, procedure () begin lblOutput.Text := 'Finished'; end); end).Start; end; |
AW: Grafische Ausgabe aus einem Thread heraus
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 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