3 回答

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
最簡(jiǎn)單的就是
string filename = ...
Thread thread = new Thread(() => download(filename));
thread.Start();
這個(gè)(結(jié)束ParameterizedThreadStart)的優(yōu)點(diǎn)是你可以傳遞多個(gè)參數(shù),并且你可以獲得編譯時(shí)檢查而無(wú)需一直進(jìn)行強(qiáng)制轉(zhuǎn)換object。

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊
看看這個(gè)例子:
public void RunWorker()
{
Thread newThread = new Thread(WorkerMethod);
newThread.Start(new Parameter());
}
public void WorkerMethod(object parameterObj)
{
var parameter = (Parameter)parameterObj;
// do your job!
}
您首先通過(guò)將委托傳遞給worker方法來(lái)創(chuàng)建線(xiàn)程,然后使用Thread.Start方法啟動(dòng)它,該方法將您的對(duì)象作為參數(shù)。
所以在你的情況下你應(yīng)該像這樣使用它:
Thread thread = new Thread(download);
thread.Start(filename);
但是你的'下載'方法仍然需要取對(duì)象,而不是字符串作為參數(shù)。您可以將其強(qiáng)制轉(zhuǎn)換為方法體中的字符串。

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
您希望將ParameterizedThreadStart委托用于帶參數(shù)的線(xiàn)程方法。(或者根本沒(méi)有,讓Thread構(gòu)造函數(shù)推斷。)
用法示例:
var thread = new Thread(new ParameterizedThreadStart(download));
//var thread = new Thread(download); // equivalent
thread.Start(filename)
- 3 回答
- 0 關(guān)注
- 994 瀏覽
添加回答
舉報(bào)