457 Stimmen

Was ist der Unterschied zwischen Invoke() und BeginInvoke()?

Ich frage mich nur, was der Unterschied zwischen BeginInvoke() y Invoke() sind?

Vor allem, wofür sie jeweils verwendet werden sollen.

EDIT: Was ist der Unterschied zwischen dem Erstellen eines Threading-Objekts und dem Aufruf von invoke für dieses und dem einfachen Aufruf von BeginInvoke() auf einen Delegierten? oder sind sie dasselbe?

10voto

Ingako Punkte 393

Ich füge nur hinzu, warum und wann Invoke() zu verwenden ist.

Sowohl Invoke() als auch BeginInvoke() übermitteln den von Ihnen angegebenen Code an den Dispatcher-Thread.

Aber im Gegensatz zu BeginInvoke() hält Invoke() Ihren Thread an, bis der Dispatcher Ihren Code ausführt. Sie sollten Invoke() verwenden, wenn Sie eine asynchrone Operation unterbrechen müssen, bis der Benutzer eine Rückmeldung gegeben hat.

Sie könnten beispielsweise Invoke() aufrufen, um einen Codeausschnitt auszuführen, der ein Dialogfeld "OK/Abbrechen" anzeigt. Nachdem der Benutzer auf eine Schaltfläche geklickt hat und der übertragene Code abgeschlossen ist, kehrt die invoke()-Methode zurück, und Sie können auf die Antwort des Benutzers reagieren.

Siehe Pro WPF in C# Kapitel 31

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X