天天看点

异步编程Demo

1.问题

委托可以直接异步进行(BeginInvoke),而不用再开线程(Thread),实质是一样的

直接执行委托

第一次异步执行

IsCompleted属性用于判断异步是否执行完毕.

这里用一个while语句语句判断委托是否执行完毕.

虽然委托执行的方法是异步的,但问题是无法知道什么时候执行完毕,却当委托有返回值时,还需要执行EndInvoke来获取返回值,还不是彻底的异步.

只有在BeginInvoke执行完毕后才能获取到EndInvoke的返回值,否则就失去了异步的效果,所以需要判断IsCompleted以阻止执行EndInvoke

使用WaitHandle

使用后的效果同上,无法真正意义上的解决问题.如果内部提供一个callback的方法就好了。

使用异步回调

这是真正解决问题的方法

第3个参数为异步委托,第4个执行的对象.

更方便的执行匿名委托

只方便记忆

继续阅读