Rufen Sie ToolStripMenuItem auf

9

Ich versuche herauszufinden, ob es eine Möglichkeit gibt, ToolStripMenuItem aufzurufen.

Zum Beispiel rufe ich einen Webservice (ASynchrously) auf, wenn das Ergebnis zurückgegeben wird. Ich beziehe die Drop-Down-Elemente entsprechend dem Ergebnis (in Callback-Methode)

%Vor%

aber ich bekomme eine Ausnahme

Cross-thread-Operation nicht gültig: Steuerung '', auf die von einem anderen Thread als dem Thread zugegriffen wird, auf dem sie erstellt wurde.

Dem Tooltrip-Objekt ist keine Aufruffunktion zugeordnet .  Kann ich das anders machen? Versuche ich das völlig falsch zu machen? Jede Eingabe wäre hilfreich.

    
Zain Ali 22.08.2011, 09:25
quelle

2 Antworten

18

Sie versuchen Code auszuführen, der sich auf den Hauptsteuerungs-Thread in einem anderen Thread stützt. Sie sollten ihn mit Invoke method aufrufen:

%Vor%

Beim Zugriff auf Steuerelemente / Methoden aus einem Thread, der sich vom Thread unterscheidet, auf dem das Steuerelement ursprünglich erstellt hat, sollten Sie control.Invoke method verwenden, damit die Ausführung im Delegaten des Aufrufs zum Hauptthread marshallt wird.

Bearbeiten: Da Sie ToolStripMenuItem nicht ToolStrip verwenden, enthält ToolStripMenuItem nicht Invoke member. Sie können den Formularaufruf also entweder mit " this.Invoke " verwenden. "oder Ihre toolStrip ihre Eltern" ToolStrip "Aufrufen, also:

%Vor%     
Jalal Said 22.08.2011, 09:28
quelle
5

Sie versuchen, den Menüeintrag aus einem Thread und nicht aus dem Hauptthread aufzurufen. Probieren Sie diesen Code aus:

%Vor%     
Sara S. 22.08.2011 09:52
quelle