簡單複印麪食這裏:.NET 4.0:請幫我解決這個問題的任務
static void Main(string[] args)
{
List<Task> Tasks = new List<Task>();
Random r = new Random();
for (int o = 0; o < 5; o++)
Tasks.Add(Task.Factory.StartNew(() => { int i = r.Next(0, 3000); Thread.Sleep(i); Console.WriteLine("{0}: {1}", o, i); }));
Task.WaitAll(Tasks.ToArray());
Console.Read();
}
當您運行,你會得到這樣的事情:
5: 98
5: 198
5: 658
5: 1149
5: 1300
什麼我不理解對這個?當我期望以隨機順序看到數字0到4時,編寫o
的每次迭代對於所有線程顯示爲5。
我嘗試使用實際的方法,而不是匿名,它做同樣的事情。我錯過了什麼?
編輯:我剛剛發現我的第一篇文章的問題,並編輯了問題,所以很抱歉,如果你回答有關不正確的訂單問題。不過,我很好奇爲什麼o
寫得不好。
我是不知道我明白。你能提供代碼,以便我能看到你的意思嗎? – oscilatingcretin
工作正常!我仍然不明白這個「關閉循環變量」的東西,但我只需要閱讀更多的內容。 – oscilatingcretin
@ scilatingcretin:Eric Lippert的文章鏈接上面,讓人有一個好讀 – BrokenGlass