![]() |
von Workerthread Methode des Mainthread aufrufen
Ich habe eine Methode welche ein paar Datenbankabfragen erledigt. Diese Methode soll in einem extra Thread laufen, weil es auch einmal länger dauern kann.
Diese Aktion kann sowohl händig per Menuclick ausgelöst werden als auch von einem Timer (mit sehr großem Intervall). Wenn der Thread fertig ist, müssen ein paar Aktionen im Mainthread erledigt werden. Die sind je nach Datenbankabfrageergebnis u.a eine Meldung zeigen oder das TNA-Icon ändern (es ist eine TNA-Anwendung). Jetzt ist die Frage, wie macht man das? In Win32-Delphi gibt es ja so ein schönes Ereignis namens onTerminate, dass auch gleich im Mainthread läuft. In DotNet habe ich so etwas nicht gefunden. Neben ThreadPool, der direkten Threadklasse habe ich auch schon versucht mittels Delegates.BeginInvoke zu arbeiten. Bei letzterem wird nicht nur der Thread gestartet (wie bei allen anderen Varianten auch), sondern ich kann auch eine "EndMethode" angeben. Allerdings läuft die auch asynchron zum Mainthread. Das schönste wäre, wenn ich einfach aus dem WorkerThread eine Methode im Context des Mainthreades aufrufen kann. Edit: Wo kann ich denn den Titel hier im Forum korrigieren? |
AW: von Workerthread Methode des Mainthread aufrufen
Schau mal hier:
![]() Im Prinzip prüfst Du auf einem Control im Hauptthread, ob es bei 'InvokeRequired' true zurückliefert. Wenn ja, gibst Du einen Delegaten der die Anweisung ausführt mittels Invoke an das Control. Diesen führt das Control dann bei nächster Gelegenheit in seinem Thread-Context aus. |
AW: von Workerthread Methode des Mainthread aufrufen
Danke für den Tipp.
Ich hatte zwar erstmal Probleme ein control in meiner Anwendung zu finden, aber dann habe ich einfach mein Startobjekt (bzw. dessen Klasse) das noch ohne Vorfahr war auf Control aufgesetzt und im Constructor noch CreateHandle aufgerufen. So geht es zumindest. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 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