一、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是操作控件的具體方法。