由於異步委托產生的線程與應用程序主線程是分開執行的,若主線程要獲取異步委托線程的結果,則主線程需要等待異步委托的執行結果。
BeginInvoke是Delegate類型的一個方法,它的返回類型為IAsyncResult,通過該接口,可以獲得異步委托的執行信息。
1、投票技術:等待異步委托結果的一種方法是投票技術,該技術的實現原理是通過IAsyncResult接口的IsComplete屬性來檢查委托是否完成了任務。EndInvote方法獲取執行結果。舉個例子,如下:
執行后的效果:
2、訪問等待句柄技術:是等待異步委托結果的第二種方法,其實也就是使用IAsyncResultAsync接口的AsyncWaitHandle屬性來訪問等待句柄的,通過該屬性獲得一個WaitHandle對象,WaitHandle對象有個方法WaitOne()。
代碼如下:
執行效果: