带参数的Dispatch.Invoke(new Action …)
以前我有过
Dispatcher.Invoke(new Action(() => colorManager.Update()));
从另一个线程更新显示到WPF。 由于设计,我不得不改变程序,我必须将ColorImageFrame参数传递给我的ColorStreamManager.Update()方法。
点击此链接后,我将调度程序修改为:
Dispatcher.Invoke(new Action((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
委托调用Invoke
,则需要将两个Action参数传递给Invoke调用:
ColorStreamManager colorManager = ... ColorImageFrame frame = ... Dispatcher.Invoke( new Action((p,v) => p.Update(v)), colorManager, frame);
您在此处使用的Invoke重载是Dispatcher.Invoke(Delegate, Object[])
。