Zitat von
Osse:
Mein Hauptformular ist mein Hauptthread (Thread 1)in dem die Anzeige gemacht wird. Das Heißt ich müsste doch eine Funktion schreiben, die dann ausgeführt wird, so wie bei einem Interrupt (komme aus der uC Welt). Also eine Procedure für das Event, so wie Button on Klick. Nur wie lautet der Funktionsaufruf, hab in den Methoden nix gefunden
.
Der 2. Thread guckt die ganze Zeit nach den Eingangsdaten.
Achso, du nimmst den Hauptthread, um die Daten anzuzeigen.
Dann gäbe es da auch eine ganz einfache Möglichkeit.
Dein Daten-Sammel Thread posted einfach eine benutzerdefinierte Message:
Delphi-Quellcode:
const UM_DATA_UPDATE = WM_USER +1; // benutzerdefinierte Message
// Thread
if neue_daten_da then
// Message wird in die windowsMessage Queue gelegt; der Thread rennt ungebremst weiter
PostMessage(Application.Mainform.Handle, UM_DATA_UPDATE, 0,0);
// im Hauptformular
procedure DATA_UPDATE(var msg: TMessage); message UM_DATA_UPDATE;
// in obiger Prozedure werden dann die Daten abgeholt und evtl. auch visualisiert
Zitat von
Osse:
Wieso schreibst du immer ...Event das muss doch immer gleich heißen oder? Wenn du es mit FEvent angelegt hast, dann muss es auch FEvent bleiben, oder und kann nicht ich-mach-was-ich-will-Event werden??
Weil FEvent entweder eine globale Variable oder eine Variable eines Formulars ist.
Wenn ich von einem Thread auf eine Variable eines Formulars zugreife, sieht das so aus:
Delphi-Quellcode:
AnzeigeForm.Event.SetEvent;
// bei Zugriff auf eine globale Variable entfällt natürlich AnzeigeForm.