Events an bestimmte eventQueue bzw. Thread senden
-
Ich habe mir eine classe gebaut die events bereitstellt.
Diese Events werden von threads aus ausgelöst und anscheinen auch von diesen Threads verarbeitet. Ich möchte aber, dass die Events an einen anderen Thread genauer an die eventQueue meines Main Thread gesendet werden.
Momentan handhabe ich es so:
-Main ruft eine Methode meiner classe auf.
-Diese Methode startet einen thread. (mittels BeginInvoke)
-Dieser Thread ruft in der Callback Methode ein Event auf.-Dieses Event ruft eine Methode von Form1 auf (noch ist er im Thread)
Von dort aus Rufe ich Invoke bzw this->Invoke auf um eine Methode von Form1 im MainThread aufzurufen.Den letzten Punkt möchte ich gerne mit einem direkten aufruf einer Methode im MainThread ersetzen.
-
Den letzten Punkt möchte ich gerne mit einem direkten aufruf einer Methode im MainThread ersetzen.
Geht nicht. Du musst den Invoke, der letzendlich via Windows Messages geht, benutzen.
Simon
-
Hmmm... dass hätte ich jetzt nicht erwartet.
Aber danke für den Hinweis.
-
Nunja, geht nicht war vielleicht ein wenig schwammig.
Geht nicht, WENN der Aufruf eine Interaktion mit dem GUI zur Folge hat wäre genauer. Durch Invoke wird der Aufruf auf den GUI Thread gemarshallt.Wenn keine GUI Interaktion involviert ist, so musst Du selbst für die Synchronistion sorgen.
Simon
-
Es geht mir hauptsächlich darum Nachrichten an eine EventQueue eines bestimmten Threads zu senden.
Das mache ich ja berreits mit Invoke. Aber ich möchte halt einen direkten Aufruf. So das ich nicht mehr in eine Methode meiner Form1 springen muss.Momentan komme ich wunderbar mit Invoke zurecht. Dennoch möchte ich auch mal mehrerer Threads mit jeweils eigener EventQueue benutzen. So das sie sich gegenseitig Events senden können.