匿名関数 (ラムダ式と匿名メソッド) は特定のデリゲート型に変換する必要がありDispatcher.BeginInvoke
ますが、 Delegate
. これには2つのオプションがあります...
引き続き既存のBeginInvoke
呼び出しを使用しますが、デリゲート タイプを指定します。ここにはさまざまなアプローチがありますが、私は通常、無名関数を前のステートメントに抽出します。
Action action = delegate() {
this.Log.Add(...);
};
Dispatcher.BeginInvoke(action);
の代わりにDispatcher
取る拡張メソッドを作成します。Action
Delegate
public static void BeginInvokeAction(this Dispatcher dispatcher,
Action action)
{
Dispatcher.BeginInvoke(action);
}
次に、暗黙的な変換で拡張メソッドを呼び出すことができます
this.Dispatcher.BeginInvokeAction(
delegate()
{
this.Log.Add(...);
});
一般に、匿名メソッドの代わりにラムダ式を使用することもお勧めします。
Dispatcher.BeginInvokeAction(() => this.Log.Add(...));
編集:コメントに記載されているようにDispatcher.BeginInvoke
、.NET 4.5 でオーバーロードがAction
直接取得されるため、その場合は拡張メソッドは必要ありません。