[ComVisible(false)]
public delegate void ParameterizedThreadStart(object obj);
public Thread(ParameterizedThreadStart start);
static void ParamMethod(object obj) => Console.WriteLine(obj);
static void Main() {
new Thread(ParamMethod).Start("委派參數傳值");
}
ThreadStart) 不可呼叫帶參數 Start(obj),會拋出例外Start(),參數接收 null
class MyData {
private string d1; private int d2;
public MyData(string d1, int d2) { this.d1 = d1; this.d2 = d2; }
public void ThreadMethod() { Console.WriteLine(d1); Console.WriteLine(d2); }
}
new Thread(new MyData("abcd", 1234).ThreadMethod).Start();
abstract class MyThread {
private Thread thread;
public abstract void Run();
public void Start() {
if (thread == null) thread = new Thread(Run);
thread.Start();
}
}
繼承 MyThread 並覆寫 Run() 即具備多執行緒能力,建構函式可注入任意複雜參數。