BeginInvoke需要加委托才能行,否则会出错,给你段代码参考以下:
BeginInvoke 所调用的委托根本就是在 UI 线程中执行的
BeginInvoke实现了事件的异步执行,如实例:
private static int newTask(int mms) { Console.WriteLine("任务开始"); Thread.Sleep(mms); Random random = new Random(); int n = random.Next(10000); Console.WriteLine("任务完成"); return n; } private delegate int NewTaskDelegate(int mms); static void Main(string[] args) { NewTaskDelegate newTst = newTask; IAsyncResult asyncResult = newTst.BeginInvoke(2000, null, null); while (!asyncResult.IsCompleted) { Console.Write("*"); Thread.Sleep(100); } int result = newTst.EndInvoke(asyncResult); Console.WriteLine(result); }
*******************表示后台正在执行事件
public delegate void DCmdHandler(object s);if (servForm.IsHandleted){ servForm.BeginInvoke(new DCmdHandler(ExecuteCmd), cmd);}private void ExecuteCmd(object s){ //委托里需要干的事情}