AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein .NET-Framework (managed code) C# von Workerthread Methode des Mainthread aufrufen
Thema durchsuchen
Ansicht
Themen-Optionen

von Workerthread Methode des Mainthread aufrufen

Ein Thema von sirius · begonnen am 23. Jun 2010 · letzter Beitrag vom 23. Jun 2010
Antwort Antwort
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#1

von Workerthread Methode des Mainthread aufrufen

  Alt 23. Jun 2010, 13:59
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?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#2

AW: von Workerthread Methode des Mainthread aufrufen

  Alt 23. Jun 2010, 14:22
Schau mal hier: http://www.hinzberg.net/csharp/cshar...eadinvoke.html

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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: von Workerthread Methode des Mainthread aufrufen

  Alt 23. Jun 2010, 15:22
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.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz