我有一些简单的代码,其中主线程正在创建一个新的任务。该任务反过来产生多个子任务。 主线程在父任务上执行'等待'。我注意到,在多次运行程序时,我没有得到相同的输出结果。在下面的代码中,我打印出每个任务中迭代变量的值,但是在不同的运行中,只有子集被打印出来。我知道执行不是有序的,但它仍然必须完整,因为我期望打印出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