之前做了一個小的應用程序,用的是c#語言,涉及到了多線程的多參數傳遞,經過查找資料總結了一下解決方案!
第一種解決方案的原理是:將線程執行的方法和參數都封裝到一個類里面。通過實例化該類,方法就可以調用屬性來實現間接的類型安全地傳遞多個參數??慈缦麓a:
//ThreadWithState 類里包含了將要執行的任務以及執行任務的方法
public class ThreadWithState {
//要用到的屬性,也就是我們要傳遞的參數
private string boilerplate;
private int value;
//包含參數的構造函數
public ThreadWithState(string text, int number)
{
boilerplate = text;
value = number;
}
//要丟給線程執行的方法,本處無返回類型就是為了能讓ThreadStart來調用
public void ThreadProc()
{
//這里就是要執行的任務,本處只顯示一下傳入的參數
Console.WriteLine(boilerplate, value);
}
}
// 創建執行任務的線程,并執行
Thread t = new Thread(new ThreadStart(tws.ThreadProc));
t.Start();
Console.WriteLine(“Main thread does some work, then waits.”);
t.Join();
Console.WriteLine(
“Independent task has completed; main thread ends.”);
}
}
第二種解決方案的原理是把多個參數封裝成object來傳遞,然后在線程里使用時拆箱即可,看如下代碼:
新聞熱點
疑難解答