我有一些簡單的代碼,其中主線程正在創建一個新的任務。該任務反過來產生多個子任務。 主線程在父任務上執行'等待'。我注意到,在多次運行程序時,我沒有得到相同的輸出結果。在下面的代碼中,我打印出每個任務中迭代變量的值,但是在不同的運行中,只有子集被打印出來。我知道執行不是有序的,但它仍然必須完整,因爲我期望打印出100個數字(不按特定順序)。 調用等待是否不等待所有子任務完成? 我運行VS2010 Team System中的Beta1執行和產生子任務時的結果不一致
static void Main(string[] args)
{
Console.WriteLine("Main executing on ThreadID:- " + Thread.CurrentThread.ManagedThreadId.ToString());
var task = Task.Factory.StartNew(WriteNumbers);
task.Wait();
}
private static void WriteNumbers()
{
Console.WriteLine("WriteNumbers executing on ThreadID:- " + Thread.CurrentThread.ManagedThreadId.ToString());
for (int i = 0; i < 100; i++)
{
int localInt = i;
Task.Factory.StartNew(() =>
{
Write(localInt);
}, TaskCreationOptions.DetachedFromParent);
}
}
private static void Write(int i)
{
Console.WriteLine("Worker Thread executing on ThreadID:-" + Thread.CurrentThread.ManagedThreadId.ToString() + " Value:" + i.ToString());
}
聽起來像一個併發問題 – Kareem 2009-06-14 23:52:09