定义一个委托,调用BeginInvoke方法,等待异步调用完成。
而等待异步调用完成的方式,MSDN给出了4种,其中有一种把我搞迷糊了。
链接地址
http://msdn.microsoft.com/zh-cn/library/2e08f6yc(v=vs.110)
MSDN上说“异步调用完成时,WaitHandle 会收到信号,您可以通过调用 WaitOne 方法等待它。”然后还提示说要调用Close方法来显示关闭等待句柄。
其中WaitOne方法的解释是:阻止当前线程,直到当前 WaitHandle 收到信号。
那么用WaitHandle等待异步调用,这种方式跟轮询异步调用完成有什么区别呢?
怎么感觉除了轮询异步调用完成的时候可以执行其他操作外(循环体内),二者相差不大,同样可以起到阻止当前线程,等待委托调用完成的作用呀。
目前我的猜测是如果你在轮询异步调用完成的时候不执行其他操作,就可以用WaitOne替代,因为这个比轮询的效率要高,语义上看来也比较清晰?我是这么理解的。。