一、MethodInvoker是什么?

  MethodInvoker 表示一个委托,该委托可以执行托管代码中声明为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是操作控件的具体方法。

 

posted on 2017-08-26 14:33  2317  阅读(11414)  评论(0编辑  收藏  举报