Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - TEvent an GUI Thread schicken
Arne - Do 04.09.14 11:06
Titel: TEvent an GUI Thread schicken
Servus zusammen,
ich nutze D2007 und stehe vor folgendem Problem: ich muss Berechnungen, die Minuten dauern, in einen eigenen Thread auslagern, da sonst die Applikation mit einer AccessViolation auf die Adresse $FEEEFEEE abschmiert. Ich kann mir nur vorstellen, dass die langen Berechnungen im GUI Thread hierzu führen.
Nun möchte ich diese Berechnungen in einen Thread auslagern, der aber irgendwann dem GUI Thread mitteilen muss, dass er fertig ist und die Ergebnisse abgeholt werden können. Der Workerthread sendet nun z.B. ein TEvent.SetEvent. Aber wie kann der GUI Thread darauf lauschen? Eine nicht so tolle Methode wäre einen TTimer zyklisch auf das TEvent lauschen zu lassen. Aber wie macht man es richtig?
thanx, Arne
Sinspin - Do 04.09.14 11:35
Hi,
Du kannst auch mit PostMessage arbeiten und an das Handle deines Fensters eine Nachricht senden. Das einzige was zu beachten ist, ist das der Aufruf Synchron mit dem dem Hauptthread erfolgen muss.
Delphi-Quelltext
1: 2: 3: 4: 5:
| Synchronize( procedure begin PostMessage(WindowHandle, MessageType, 0, 0); end); |
Tastaro - Do 04.09.14 11:40
tevent hat die Methode WaitFor. Damit kann man auf das Setzen des Events warten.
jfheins - Do 04.09.14 18:49
Sinspin hat folgendes geschrieben : |
Hi,
Du kannst auch mit PostMessage arbeiten und an das Handle deines Fensters eine Nachricht senden. Das einzige was zu beachten ist, ist das der Aufruf Synchron mit dem dem Hauptthread erfolgen muss.
|
Hä? PostMessage ist eine reine WIn32 API-Funktion, die brauchst du nicht synchronisieren. Ist ja auch irgendwie witzlos, zu warten bis der GUI Thread Zeit hat, nur um dann ein PostMessage zu machen. Da könnte man auch direkt ein SendMessage machen oder direkt im Synchonize eine Funktion der GUI aufrufen.
Sinspin - Do 04.09.14 23:25
Soso, dann habe ich also Heute doch noch was gelernt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!