class AAA { public static void Main() { Thread t = new Thread(new ThreadStart(A)); t.Start(); Console.Read(); } private static void A() { Console.WriteLine("Method A!"); } }
如果帶一個參數,Thread類的構造方法中提供了此項功能。以下,html
class AAA { public static void Main() { Thread t = new Thread(new ParameterizedThreadStart(B)); t.Start("B"); Console.Read(); } private static void B(object obj) { Console.WriteLine("Method {0}!",obj.ToString ()); } }可是若要帶多個參數,就須要進行多一步的處理,處理方法不少,稍微舉幾例,
示例一:this
借用對象的屬性傳值,將對象做爲參數spa
class AAA { public static void Main() { My m = new My(); m.x = 2; m.y = 3; Thread t = new Thread(new ThreadStart(m.C)); t.Start(); Console.Read(); } class My { public int x, y; public void C() { Console.WriteLine("x={0},y={1}", this.x, this.y); } }
示例二:code
借用結構體htm
struct RowCol { public int row; public int col; }; //定義方法 public void Output(Object rc) { RowCol rowCol = (RowCol)rc; for (int i = 0; i < rowCol.row; i++) { for (int j = 0; j < rowCol.col; j++) Console.Write("{0} ", _char); Console.Write("\n"); } }
static void Main(string[] args) { string name = "sfsfsf"; string id = "12323"; Thread th = new Thread(new ThreadStart(delegate() { run(name, id); })); th.Start(); Console.Read(); th.Abort(); } public static void run(string name, string id) { Console.WriteLine(name + "," + id); }
class Program { static void Main(string[] args) { string hello = "hello world"; //若是寫成Thread thread = new Thread(ThreadMainWithParameters(hello));這種形式,編譯時就會報錯 Thread thread = new Thread(() => ThreadMainWithParameters(hello)); thread.Start(); Console.Read(); } static void ThreadMainWithParameters(string str) { Console.WriteLine("Running in a thread,received: {0}", str); } }
匿名方法的使用使代碼看上去簡單明瞭,但咱們必定要注意匿名方法會引起的一些不易察覺的問題,對象
其中就包括匿名方法引發的變量共享問題,有關此問題的詳細介紹請參見string
文章:http://www.2cto.com/kf/201112/113646.html。it