1、定義一個委托
delegate long MyDel(int first, int second);
2、 需異步操作的函數
static int sum(int x,int y) ? ? ? ? ? ? ? ?{Console.WriteLine("InSide Sum1");Thread.Sleep(1000);Console.WriteLine("InSide Sum2");return x + y;}
3、回調方法,在異步方法執行完后才執行 ,接收返回結果
static ?void callback_(IAsyncResult iar)?
{Console.WriteLine("Inside CallWhenDone");AsyncResult ar = (AsyncResult)iar; //里氏轉換,如果父類中裝的是子類的對象,那么可以將這個父類轉換為子類對象 ??Mydel del = (Mydel)ar.AsyncDelegate; ?//通過AsyncResult類對象的AsyncDelegate屬性轉化為合適的Mydel委托類型long result = del.EndInvoke(iar);Console.WriteLine("The result is: {0}",result);
}
4、異步調用:
static void Main(string[] args){Mydel Del = new Mydel(sum);Console.WriteLine("Before BeginInvoke");IAsyncResult iar = Del.BeginInvoke(5,6,new AsyncCallback(callback_),Del); ? ? ? ? ? ? ? ? ? //Del煥成null結果也一樣Console.WriteLine("Doing more work in main");Thread.Sleep(500);Console.WriteLine("Done with Main.Exiting");Console.ReadKey();}