1,調用沒有參數的方法 public class jh { public static void Process() { //...... } } Thread thread = new Thread(new ThreadStart(jh.Process)); thread.Start(); 2,調用有參數的方法(.net 規定這個方法只有一個參數並且必須是object類型) public class jh { public static void Process(object data) { //...... } } List<string> data = new List<string>(); data.Add("江湖"); Thread thread = new Thread(new ParameterizedThreadStart(jh.Process)); thread.Start(data); 3,調用多參數的方法(在.net 3.5的時候有了Lambda運算式,可以輕鬆的調用了) public class jh { public static void Process(string p1,int p2) { //...... } } Thread thread = new Thread(() => { jh.Process("江湖小子", 888); }); thread.Start(); 編譯器是把Lambda運算式轉換成了以之對應的委託類型的執行個體,同時產生了對應的隨機方法,我們知道Thread建構函式裡面有兩種委託類型ThreadStart和ParameterizedThreadStart,假如它是把Lambda運算式轉換成了ThreadStart執行個體,按我的理解編譯器會編譯成下面的代碼。 Thread thread = new Thread(new ThreadStart(ts));//編譯器產生 thread.Start(); ThreadStart ts = new ThreadStart(IsValidXXXX);//編譯器產生 public static void IsValidXXXX()//編譯器產生 { jh.Process("江湖小子",888); } 註:編譯器產生的新變數或者方法等名稱是隨機的。 |