一、MethodInvoker是什么?
MethodInvoker 是位于System.Windows.Forms下的元数据,表示一个委托,该委托可以执行托管代码中声明为void且不接受任何参数的任何方法。在对控件的 invoke 方法进行调用时或需要一个简单委托又不想自己定义时可以使用该委托。
二、MethodInvoker如何使用
使用MethodInvoker可以不用声明,将需要异步或同步执行的方法当做参数传递给委托实例化的MethodInvoker对象。
MethodInvoker a = new MethodInvoker(Func);//Func需要异步执行的方法(Func为声明为void且不接受任何参数的方法)
a.BeginInvoke(null,null);
当Func方法异步执行完成后,需要对主线程的控件进行操作时代码如下
MethodInvoker a = new MethodInvoker(Func);
a.BeginInvoke((i =>
{
if (i.IsCompleted)
{
if (Button1.InvokeRequired)
{
Action toDo = () => Button1.Visible = false;
ProWaitPanl.Invoke(toDo);
}
else
{
Button1.Visible = false;
}
}
}), null);
Button1代表需要进行操作的控件,toDo是操作控件的具体方法。
以上转载自:https://www.cnblogs.com/king2317/p/7435282.html
三、Invoke方法中使用MethodInvoker
有如下一种使用方法
Program.form1.Invoke((MethodInvoker)(() =>
{
...
}));
Invoke 这个方法是代码所在窗体基类(Control)的一个方法
public object Invoke(Delegate method);
void Invoke(MethodInvoker method);功能是让调用Invoke方法的线程可以操作窗体线程创建的对象。
(MethodInvoker)(() => {…}) 这句是说把 lambda表达式强制转换成MethodInvoker类型。
今天的文章C# 中MethodInvoker委托的使用分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/12915.html