//定義委托 delegate string MyDelegate(string name); //定義委托調用函數 public string Hello(string name) { Thread.Sleep(10000); //虛擬異步工作 return "Hello " + name; } //以下調用並獲取返回值 private void Form1_Load(object sender, EventArgs e) { //建立委托 MyDelegate myDelegate = new MyDelegate(Hello); //異步調用委托,獲取委托執行函數返回的執行結果 IAsyncResult result=myDelegate.BeginInvoke("Leslie", null, null); //定義一個變量接收委托函數執行的返回結果 string data=""; //判斷如果異步執行是否完 while (result.IsCompleted==false) { Thread.Sleep(20); } //如果異步函數執行完成則獲取返回結果 data = myDelegate.EndInvoke(result); }
IAsyncResult的相關說明:
public interface IAsyncResult
{
object AsyncState {get;} //獲取用戶定義的對象,它限定或包含關於異步操作的信息。
WailHandle AsyncWaitHandle {get;} //獲取用於等待異步操作完成的 WaitHandle。
bool CompletedSynchronously {get;} //獲取異步操作是否同步完成的指示。
bool IsCompleted {get;} //獲取異步操作是否已完成的指示。
}
