1. 程式人生 > >異步委托(實現多線程的方式)

異步委托(實現多線程的方式)

類型安全 class 異步調用 line 如果 thread 實現 ati console

1.創建線程的一個簡單的方式就是定義一個委托,並異步調用它。委托是方法的類型安全的引用,

Delegate類還支持異步地調用方法,在後臺Delegate類會自動創建一個執行任務的線程。委托使用

線程池來完成任務 。

public static int TakesAWhile(int data,int ms)
{
    Console.WriteLine("TakesAWhile started");
    Thread.Sleep(ms);
    Console.WriteLine("TakesAWhile completed");
    return ++data;
}
public
delegate int TakesAWhileDelegate(int data, int ms); public void Test1() { TakesAWhileDelegate d1 = AsyncDelegate.TakesAWhile; /*類Delegate提供了BeginInvoke方法,改方法總是有AsyncCallBack和object類型的 * 兩個額外的參數,返回類型為IAsyncResult,通過IAsyncResult獲取委托的信息: * 驗證是否完成了任務。 */ IAsyncResult ar
= d1.BeginInvoke(1, 3000, null, null); //如果沒有完成任務,就每個50ms輸出一次. //while (!ar.IsCompleted) //{ // Console.Write("."); // Thread.Sleep(500); //} //EndInvoke方法會等待BeginInvoke方法完成之後執行,這裏會有進程阻塞 int result = d1.EndInvoke(ar); Console.WriteLine("result : " + result); //Console.WriteLine("end..");
}

2.

異步委托(實現多線程的方式)