本文將主要通過“同步調用”、“異步調用”、“異步回調”三個示例來講解在用委托執行同一個“加法類”的時候的的區別和利弊。
首先,通過代碼定義一個委托和下面三個示例將要調用的方法:
/*添加的命名空間
using System.Threading;
using System.Runtime.Remoting.Messaging;
*/
public delegate int AddHandler(int a,int b);
public class 加法類
{
public static int Add(int a, int b)
{
Console.WriteLine("開始計算:" + a + "+" + b);
Thread.Sleep(3000); //模擬該方法運行三秒
Console.WriteLine("計算完成!");
return a + b;
}
}
同步調用
委托的Invoke方法用來進行同步調用。同步調用也可以叫阻塞調用,它將阻塞當前線程,然後執行調用,調用完畢後再繼續向下進行。
public class 同步調用
{
static void Main()
{
Console.WriteLine("===== 同步調用 SyncInvokeTest =====");
AddHandler handler = new AddHandler(加法類.Add);
int result = handler.Invoke(1, 2);
Console.WriteLine("繼續做別的事情。。。");
Console.WriteLine(result);
&nbs