我剛開始玩線程今天,我遇到了一些我不明白的東西。從循環啓動線程並傳遞循環ID
public void Main()
{
int maxValue = 5;
for (int ID = 0; ID < maxValue; ID++)
{
temp(ID);
}
}
public void temp(int i)
{
MessageBox.Show(i.ToString());
}
作爲基本,因爲它得到的正常工作,但是當我嘗試創建的每個新的線程,它只是通過了包括maxValue。請忽略這種做法有多糟糕,我只是以一種簡單的例子來這樣寫的。
public void Main()
{
int maxValue = 5;
for (int ID = 0; ID < maxValue; ID++)
{
threads.Add(new Thread(() => temp(myString, rowID)));
threads[rowID].Start();
}
}
public void temp(string myString, int i)
{
string _myString = myString;
MessageBox.Show(i.ToString());
}
鑑於此,我有兩個問題: 1)爲什麼犯規一個方法被調用上傳遞的ID一個新的線程? 2)如何正確編碼?
首先,你有未申報的rowID變量。將這兩個事件重命名爲ID,它將工作得很好。下面的答案是OBSOLETE! – mnn 2009-09-14 20:26:13
rowID是一個錯字..如果這被改爲ID它不工作喬恩答案是正確的。 – 2009-09-14 20:34:43
@mnn:不會的。您對C#中捕獲的變量的工作方式有多熟悉? – 2009-09-14 20:36:17