由于异步委托产生的线程与应用程序主线程是分开执行的,若主线程要获取异步委托线程的结果,则主线程需要等待异步委托的执行结果。
BeginInvoke是Delegate类型的一个方法,它的返回类型为IAsyncResult,通过该接口,可以获得异步委托的执行信息。
1、投票技术:等待异步委托结果的一种方法是投票技术,该技术的实现原理是通过IAsyncResult接口的IsComplete属性来检查委托是否完成了任务。EndInvote方法获取执行结果。举个例子,如下:
执行后的效果:
2、访问等待句柄技术:是等待异步委托结果的第二种方法,其实也就是使用IAsyncResultAsync接口的AsyncWaitHandle属性来访问等待句柄的,通过该属性获得一个WaitHandle对象,WaitHandle对象有个方法WaitOne()。
代码如下:
执行效果: