static private int AddTwoNumbers(int num1,int num2)
{
int result = num1 + num2;
System.Threading.Thread.Sleep(5000);
return result;
}
static private void ResultCallback(IAsyncResult ar)
{
MethodDelegate dele = (MethodDelegate)((AsyncResult)ar).AsyncDelegate;
int result = dele.EndInvoke(ar);
Console.WriteLine("result={0}",result);
}
}
}
程序一运行:
五秒后
现在我们分析下程序,首
先我们定义一个委托类型,
从 而 可 以 指 向
AddTwoNumbers 方法。
接下来,定义一个类型为
AsyncCallback 的委托。AsyncCallback 是引用某个方法的委托,
当异步操作完成时调用该方法。
使用
result 委托的 BeginInvoke()方法异步调用 AddTwoNumbers(),并且向该方法传递两个
整型以及在该方法结束执行时回调的委托。
BeginInvoke()方法异步调用委托,在调用异步委托之后,下一条语句会继续执行。该方法
返回类型为
IAsyncResult 的变量,该变量表示异步操作的状态。
在
ResultCallback 方法中,首先使用 AsyncDelegate 特性获得指向 AddTwoNumbers()方法