本篇體驗:如何傳遞數據給線程,如何給線程命名,線程的異常處理,線程池。實在是太基礎的部分。
□ 傳遞數據給線程
※ 使用Lambda表達式
class PRogram{static void Main(string[] args){Thread t = new Thread(() => Say("hello", "world"));t.Start();}static void Say(string msg, string msg1){Console.WriteLine("第一個參數值是:"+msg);Console.WriteLine("第二個參數值是:" + msg1);}}
使用Lambda表達式需要注意的一個問題。
class Program{static void Main(string[] args){for (int i = 0; i < 10; i++){new Thread(() => Console.WriteLine("當前線程#" + Thread.CurrentThread.ManagedThreadId + "輸出的值是:" + i)).Start();}}}
說明,有些線程共享了局部變量i。如何解決線程共享棧變量的問題呢?只需要在每次遍歷循環的時候,把i賦值給一個臨時變量,再打印臨時變量,不直接打印棧變量i。
class Program{static void Main(string[] args){for (int i = 0; i < 10; i++){int temp = i;new Thread(() => Console.WriteLine("當前線程#" + Thread.CurrentThread.ManagedThreadId + "輸出的值是:" + temp)).Start();}}
新聞熱點
疑難解答