1.問題
委托可以直接異步進行(BeginInvoke),而不用再開線程(Thread),實質是一樣的
直接執行委托
第一次異步執行
IsCompleted屬性用于判斷異步是否執行完畢.
這裡用一個while語句語句判斷委托是否執行完畢.
雖然委托執行的方法是異步的,但問題是無法知道什麼時候執行完畢,卻當委托有傳回值時,還需要執行EndInvoke來擷取傳回值,還不是徹底的異步.
隻有在BeginInvoke執行完畢後才能擷取到EndInvoke的傳回值,否則就失去了異步的效果,是以需要判斷IsCompleted以阻止執行EndInvoke
使用WaitHandle
使用後的效果同上,無法真正意義上的解決問題.如果内部提供一個callback的方法就好了。
使用異步回調
這是真正解決問題的方法
第3個參數為異步委托,第4個執行的對象.
更友善的執行匿名委托
隻友善記憶