c#基础之委托 异步 回调 .

                在程序中使用异步回调,可以通过在不同的线程中执行程序的不同部分.实现程序的快速响应.

demo如下:

View Code
 1 class Program
 2     {
 3         internal delegate int methoddelegate(int num1, int num2);// 首先定义一个委托 
 4         static void Main(string[] args)
 5         {
 6             methoddelegate m = add; //创建一个委托  指向add 方法
 7             /** AsyncCallback 是引用某个方法的委托,当异步完成操作时调用该方法,此处设置委托调用后面定义的resultasync 方法*/
 8             AsyncCallback a = resultasync; // asynccallback 指向 resultasync
 9             Console.WriteLine("async invoking the method begin....");
10             /**使用 BeginInvoke异步调用add 方法 并传入 参数及回调函数
11              *         BeginInvoke方法异步调用委托,在调用异步委托后,下一条语句会继续执行,
12              *         该方法返回 IAsyncResult的变量,该变量表示异步操作的状态.
13              *
14              */
15             IAsyncResult ia = m.BeginInvoke(1, 2, resultasync, null);
16             Console.WriteLine("continus this....");
17             Console.ReadLine();
18         }
19         //定义 resultasync方法获取计算的结果,该方法接受IAsyncResult类型的实参.
20         static void resultasync( IAsyncResult rd)
21         {
22             methoddelegate del = (methoddelegate)((AsyncResult)rd).AsyncDelegate;//通过AsyncDelegate特性获得add方法的委托
23             int result = del.EndInvoke(rd);//获取异步调用的结果,像其传入变量rd.
24             Console.WriteLine("result is:" + result);
25         }
26         public static int add(int num1, int nu2)
27         {
28             //为了演示,延迟执行,已模拟执行较长时间
29             System.Threading.Thread.Sleep(5000);
30             return num1 + nu2;
31         }
32     }

转载于:https://www.cnblogs.com/webOnine/archive/2012/07/19/2599056.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值