2010-05-05 4 views

Antwort

17

Thread.Start startet einen neuen Betriebssystem-Thread, um den Delegaten auszuführen. Wenn der Delegat zurückkehrt, wird der Thread zerstört. Dies ist eine ziemlich schwere Operation (Starten und Löschen eines Threads), so dass Sie es normalerweise nur tun, wenn die Methode lange läuft.

Delegate.BeginInvoke wird den Delegaten für einen Thread-Pool-Thread aufrufen. Sobald die Methode zurückgegeben wird, wird der Thread an den Pool zurückgegeben, um von einer anderen Task erneut verwendet zu werden. Der Vorteil besteht darin, dass das Einreihen einer Methode in den Thread-Pool relativ gering ist, da nicht jedes Mal ein ganz neuer Thread hochgefahren werden muss.

Control.BeginInvoke ruft die Methode im Thread für das Steuerelement auf. UI-Komponenten sind von Natur aus single-threaded und jede Interaktion mit einem UI-Steuerelement muss für den Thread ausgeführt werden, der es erstellt hat. Control.BeginInvoke ist eine praktische Möglichkeit, das zu tun.