带参数的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[])
。
上述就是C#学习教程:带参数的Dispatch.Invoke(new Action …)分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/992599.html