C# BeginInvoke 加 EndInvoke实现异步操作

1、定义一个委托

delegate long MyDel(int first, int second);

2、 需异步操作的函数

 static int sum(int x,int y)                
 {
     Console.WriteLine("InSide Sum1");
     Thread.Sleep(1000);
     Console.WriteLine("InSide Sum2");
     return x + y;
 }

3、回调方法,在异步方法执行完后才执行 ,接收返回结果

static  void callback_(IAsyncResult iar) 
{
   Console.WriteLine("Inside CallWhenDone");
   AsyncResult ar = (AsyncResult)iar; //里氏转换,如果父类中装的是子类的对象,那么可以将这个父类转换为子类对象   
   Mydel del = (Mydel)ar.AsyncDelegate;  //通过AsyncResult类对象的AsyncDelegate属性转化为合适的Mydel委托类型
   long result = del.EndInvoke(iar);
   Console.WriteLine("The result is: {0}",result);
}

4、异步调用:

static void Main(string[] args)
        {
            Mydel Del = new Mydel(sum);
            Console.WriteLine("Before BeginInvoke");
            IAsyncResult iar = Del.BeginInvoke(5,6,new AsyncCallback(callback_),Del);                   //Del焕成null结果也一样
            Console.WriteLine("Doing more work in main");
            Thread.Sleep(500);
            Console.WriteLine("Done with Main.Exiting");
            Console.ReadKey();
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿享天开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值