判断委托操作结束的两种方法

众所周知,委托的执行过程类似于线程的执行(实际上本质就是线程),当委托被Invoke以后,程序会开启一个异步线程执行委托,当委托执行完毕时线程自动终止。那么当委托被调用以后,如何判断委托是否已经执行完毕呢?

本文给出两种方式判断委托是否执行完毕。

1.  根据返回值判断。

当程序调用BeginInvoke启动委托的时候,BeginInvoke方法会返回一个IAsyncResult对象,该对象中有一个IsCompleted属性,当委托正在执行时IsCompleted属性为false,否则该属性为true,程序演示如下:

  1. UpdateTest update = new UpdateTest(updateTest);
  2.             IAsyncResult ar=update.BeginInvoke(TestAsync,null);
  3.             while (!result.IsCompleted) 
  4.             {
  5.               //委托正在运行  
  6.                 Console.Write(".");                
  7.                 System.Threading.Thread.Sleep(100);
  8.             }

 

2.  根据回调函数判断

注意到BeginInvoke方法中有一个名为AsyncCallBack的参数,顾名思义,该参数提供了一个回调触发函数,当委托调用完毕后,该函数将被触发。因此可以在该函数中判断委托是否调用完毕,以及给出委托处理结果。程序演示如下:

 

 

  1.  private void TestAsync(IAsyncResult ar) 
  2.         {
  3.             //委托调用完毕后的处理代码
  4.         }
  5.         public Class1() 
  6.         {
  7.             UpdateTest update = new UpdateTest(updateTest);
  8.             IAsyncResult result=update.BeginInvoke(TestAsync,null);
  9.             for(int i=0;i<1000;i++)
  10.             {
  11.                 Console.Write(".");                
  12.                 System.Threading.Thread.Sleep(100);
  13.             }
  14.           
  15.   }

 

 

 

 

 

QQ:819543772

EMail:wuchunlei@163.com

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值