天天看點

異步程式設計Demo

1.問題

委托可以直接異步進行(BeginInvoke),而不用再開線程(Thread),實質是一樣的

直接執行委托

第一次異步執行

IsCompleted屬性用于判斷異步是否執行完畢.

這裡用一個while語句語句判斷委托是否執行完畢.

雖然委托執行的方法是異步的,但問題是無法知道什麼時候執行完畢,卻當委托有傳回值時,還需要執行EndInvoke來擷取傳回值,還不是徹底的異步.

隻有在BeginInvoke執行完畢後才能擷取到EndInvoke的傳回值,否則就失去了異步的效果,是以需要判斷IsCompleted以阻止執行EndInvoke

使用WaitHandle

使用後的效果同上,無法真正意義上的解決問題.如果内部提供一個callback的方法就好了。

使用異步回調

這是真正解決問題的方法

第3個參數為異步委托,第4個執行的對象.

更友善的執行匿名委托

隻友善記憶

繼續閱讀