但它有一個比較麻煩的限制,就是只能傳一個Object。
首先我們先建一個要在Thread中執行的方法,並且傳入一個object
private void ThreadFunction(object data) { int n=Convert.ToInt32(data); System.Threading.Thread.Sleep(100); Console.WriteLine("I Get parmeter : "+n); }
接著用ParameterizedThreadStart啟動它,並且傳入參數,當然你也可以用struct同時傳入多個參數。
ParameterizedThreadStart pts; Thread mThread; for (int i=0;i<10;i++) { pts=new ParameterizedThreadStart(ThreadFunction); mThread=new Thread(pts); mThread.Start(i); }
以下是一個範例,Thread將收到的參數印出來
using System; using System.Threading; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { new Program(); } public Program() { ParameterizedThreadStart pts; Thread mThread; for (int i=0;i<10;i++) { pts=new ParameterizedThreadStart(ThreadFunction); mThread=new Thread(pts); mThread.Start(i); } } private void ThreadFunction(object data) { int n=Convert.ToInt32(data); System.Threading.Thread.Sleep(100); Console.WriteLine("I Get parmeter : "+n); } } }
執行結果
I Get parmeter : 7 I Get parmeter : 2 I Get parmeter : 3 I Get parmeter : 5 I Get parmeter : 0 I Get parmeter : 4 I Get parmeter : 9 I Get parmeter : 6 I Get parmeter : 1 I Get parmeter : 8
沒有留言:
張貼留言