以前は
Dispatcher.Invoke(new Action(() => colorManager.Update()));
別のスレッドからWPFへの表示を更新します。設計上、プログラムを変更する必要があり、ColorImageFrameパラメーターをColorStreamManager.Update()メソッドに渡す必要があります。
this リンクに続いて、ディスパッチャーを次のように変更しました。
Dispatcher.Invoke(new Action<ColorStreamManager, ColorImageFrame>((p,v) => p.Update(v)));
正常にコンパイルされますが、まったく実行されません。 VS2010は「パラメーター数が一致しません。」私のColorStreamManager.Update()
メソッドにはRaisePropertyChanged(() => Bitmap)
があります。
誰かがどこで間違ったのか指摘できますか?
ColorStreamManager.Update()
メソッドのシグネチャは次のとおりです。
public void Update(ColorImageFrame frame);
Dispatcher
はメソッドに何を渡すかがわからないため、アクションにパラメータを設定したくない場合。代わりに、変数を閉じることができます。
ColorImageFrame someFrame = ...;
Dispatcher.Invoke(new Action(() => colorManager.Update(someFrame)));
_Action<T1, T2>
_デリゲートを使用してInvoke
を呼び出す場合は、2つのActionパラメーターをInvoke呼び出しに渡す必要があります。
_ColorStreamManager colorManager = ...
ColorImageFrame frame = ...
Dispatcher.Invoke(
new Action<ColorStreamManager, ColorImageFrame>((p,v) => p.Update(v)),
colorManager,
frame);
_
ここで使用しているInvokeオーバーロードは Dispatcher.Invoke(Delegate, Object[])
です。