background image

       

        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()方法