C# -- 使用委托 delegate 執行非同步操作 委托是一種安全地封裝方法的類型,它與 C 和 C++ 中的函數指針類似。 與 C 中的函數指針不同,委托是面向對象的、類型安全的和保險的。 委托的類型由委托的名稱定義。 1. 使用委托非同步執行方法 2. 執行結果: ...
C# -- 使用委托 delegate 執行非同步操作
委托是一種安全地封裝方法的類型,它與 C 和 C++ 中的函數指針類似。 與 C 中的函數指針不同,委托是面向對象的、類型安全的和保險的。
委托的類型由委托的名稱定義。
1. 使用委托非同步執行方法
class Program { public delegate void myWorking(string s); static void Main(string[] args) { Console.WriteLine("主線程開始....線程ID:{0}", Thread.CurrentThread.ManagedThreadId); myWorking myWork1 = new myWorking(w1 => Working(w1)); myWorking myWork2 = new myWorking(w2 => Working(w2)); myWorking myWork3 = new myWorking(w3 => Working(w3)); myWorking myWork4 = new myWorking(w4 => Working(w4)); myWorking myWork5 = new myWorking(w5 => Working(w5)); //回調函數 AsyncCallback callback=new AsyncCallback(s=>Console.WriteLine("執行完成,線程ID:{0}",Thread.CurrentThread.ManagedThreadId)); //BeginInvoke非同步執行,會新啟動其他線程去執行代碼 myWork1.BeginInvoke("唱歌", callback,null); myWork2.BeginInvoke("寫代碼", callback, null); myWork3.BeginInvoke("查資料", callback, null); myWork4.BeginInvoke("交作業", callback, null); myWork5.BeginInvoke("檢查", callback, null); Console.WriteLine("主線程結束....線程ID:{0}", Thread.CurrentThread.ManagedThreadId); Console.ReadKey(); } private static void Working(string strWork) { Console.WriteLine(strWork+".....線程ID:{0}",Thread.CurrentThread.ManagedThreadId); Thread.Sleep(3000); } }
2. 執行結果: