足够简单的问题,我只需要突破一个最小的混乱墙。C#等待和多线程
因此,基于下面的简单代码:
Task task1 = new Task(() =>
{
for (int i = 0; i < 500; i++)
{
Console.WriteLine("X");
}
});
task1.Start();
task1.Wait();
for (int j = 0; j < 500; j++)
{
Console.WriteLine("Y");
}
Console.ReadLine();
因此,基于上述情况,将任务是在它自己单独的线程和主线程上的其他代码?
现在就等待而言,我很困惑,因为我正在指示等待什么。所以,回到上面的例子,假设现在任务1有工作的一个疯狂的金额做,在主线程只存在一条语句象下面这样:
Task task1 = new Task(() => { //insane amount of work to do which might take a while }); task1.Start(); task1.Wait(); Console.WriteLine("HI"); Console.ReadLine();
是等待正好挡住了线程Task1已打开?如果是这样,那么在task1完成之前,不应该允许其他线程(主线程)和WriteLine语句执行吗?还是等待说“没有线程会运行,直到我完成”?
啊好吧,等等总是指向主线程。我假设这意味着那么其他任务(如果我有多个任务)在其他线程上仍然可以发生上下文切换? – Ilya 2010-08-17 22:21:58