Was ist die Verwendung von Invoke () in .net?
Frage
Ich habe diesen Code:
this.Invoke(new EventHandler(EventGetSum));
Ist das nicht das gleiche wie das Schreiben:
EventGetSum();
Was nützt das?
Lösung
Wenn Sie EventGetSum()
schreiben, dass ruft sofort die EventGetSum Methode.
Wenn Sie schreiben new EventHandler(EventGetSum)
, die einen Delegaten erstellt, die wird (wiederum) EventGetSum aufrufen, wenn es aufgerufen wird.
Der Aufruf von Control.Invoke
ruft die gegeben Delegierten des UI-Thread für die Steuerung verantwortlich. Dies ist notwendig, weil Sie nicht UI-Elemente aus beliebigen Threads zugreifen müssen.
Andere Tipps
Es führt die EventGetSum
Verfahren in dem Thread, dass das Fenster this
gehört.
Dies wird normalerweise verwendet, wenn mit Kreuz Thread UI Anrufen.
Sehen Sie in der MSDN-Dokumentation für ISynchronizeInvoke.