我有一些简单的代码,其中主线程正在创建一个新任务。该任务又会产生多个子任务。主线程对父任务执行“等待”。我观察到在程序的多次运行中我没有得到相同的输出。在下面的代码中,我打印出每个任务中迭代变量的值,但在不同的运行中,只有子集被打印出来。我知道执行没有顺序,但它仍然必须完成,因为我希望打印出 100 个数字(没有特定顺序)。调用 Wait 不会等待所有子任务完成吗?我正在运行 VS2010 Team 系统 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());
}