public void Run() { // 在這裡開始進行執行緒所要處理的工作 int sum = 0; for (int i = 0; i < 傳遞的參數1; i++) { for (int j = 0; j < 傳遞的參數2; j++) { sum += j; } } Thread.Sleep(2000); // 表示接下來的工作,需要花費 2 秒鐘 if (On執行緒完成 != null) { // 定義要回報的工作結果,並且將計算結果回報回去 執行完成後回報結果Args foo執行完成後回報結果Args = new 執行完成後回報結果Args { 計算結果 = sum, }; // 執行 執行緒 執行完成後,需要委派的方法,也回報執行結果 On執行緒完成(this, foo執行完成後回報結果Args); } }
static void 執行緒完成事件方法(object sender, EventArgs e) { #region 取得執行緒計算完成結果 執行完成後回報結果Args foo執行完成後回報結果Args = e as 執行完成後回報結果Args; Console.WriteLine("執行緒計算結果為{0}", foo執行完成後回報結果Args.計算結果); #endregion if (_count == 1) { ThreadWorker worker = new ThreadWorker(); // 設定要傳入執行緒內的兩個參數 worker.傳遞的參數1 = 5; worker.傳遞的參數2 = 1200; // 設定執行緒完成後,需要委派執行的方法 worker.On執行緒完成 += 執行緒完成事件方法; Console.WriteLine("產生第二個新的執行緒,並且開始執行該執行緒"); // 產生第二個新的執行緒,並且開始執行該執行緒 Thread thread2 = new Thread(worker.Run); thread2.Start(); _count++; } }