Anonyme Funktionen (Lambda-Ausdrücke und anonyme Methoden) müssen in einen spezifischen Delegattyp konvertiert werden, während Dispatcher.BeginInvoke
nur Delegate
benötigt. Dafür gibt es zwei Möglichkeiten ...
Verwenden Sie weiterhin den vorhandenen BeginInvoke
-Aufruf, geben Sie jedoch den Delegattyp an. Es gibt verschiedene Ansätze hier, aber ich extrahiere die anonyme Funktion im Allgemeinen zu einer früheren Aussage:
Schreiben Sie eine Erweiterungsmethode für Dispatcher
, die Action
anstelle von Delegate
:
Dann können Sie die Erweiterungsmethode mit der impliziten Konvertierung aufrufen
%Vor%Ich würde Sie auch ermutigen, Lambda-Ausdrücke anstelle von anonymen Methoden zu verwenden:
%Vor% BEARBEITEN: Wie in Kommentaren erwähnt, hat Dispatcher.BeginInvoke
in .NET 4.5 eine Überladung erhalten, die direkt ein Action
benötigt, so dass Sie in diesem Fall die Erweiterungsmethode nicht benötigen.