![]() |
Formular mit Daten füllen nach bestimmter Aktion im Thread
Hallo,
ich habe die Verbindung zu einem IMAP-Server in einen Thread ausgelagert. Jetzt möchte ich die Daten im Formular anzeigen, sobald sie der Server (im Thread) geliefert hat. Wie mache ich das am besten? Meine erste Idee war, eine Methode in der Thread-Unit zu erstellen, die dann mit Hilfe von Synchronize die entsprechenden Objekte des Formular ändert. Aber eigentlich sollte das doch nicht in der Thread-Unit ausgeführt werden, sondern in der Unit vom Formular stehen. Könnte man das dann auch über ein Event lösen und wie funktioniert das genau? Vielen Dank für eure Hilfe! MfG Spanky |
AW: Formular mit Daten füllen nach bestimmter Aktion im Thread
Was quasi fast aufs gleiche rausläuft.
Die Eventmethode wird vom Thread ausgeführt und dafür muss das auch über Synchronize erfolgen. Die Methode ist halt nur an anderer Stelle (z.B. Im Formular) deklariert. Als Alternative, wenn man ohne Synchronize und AccessViolation auskommen möchte ist die Verwendung von einer Message die man vom Thread an das Fenster sendet. |
AW: Formular mit Daten füllen nach bestimmter Aktion im Thread
Mit Event in etwa so (dahingetippt):
Delphi-Quellcode:
Eine Message versende ich nur, wenn der Thread auf ein Ereignis warten muss und mehr nicht, also dem Hauptthread nur mitteilen muss, "Hey da tut sich was, schau mal nach."
type
TOnTutSichWas = procedure(Sender: TObject; AMyData: TMyData) of object; TMyThread = class(TThread) private FMyData: TMyData; // Klasse, Record, String, was auch immer; wird im Thread mit Daten gefüllt FOnTutSichWas: TOnTutSichWas; procedure DoSynchronize; // Methode, die im Thread mit Synchronize aufgerufen wird public property OnTutSichWas: TOnTutSichWas read FOnTutSichWas write FOnTutSichWas; end; {...} procedure TMyThread.DoSynchronize; begin if Assigned(FOnTutSichWas) then FOnTutSichWas(Self, FMyData); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:45 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