创建任务时会发生什么?

时间:2015-12-22 12:19:58

标签: c# multithreading

public MyClass foo(int parameter)
{
    var foo = new Task<MyClass>(() => bar(parameter));

    try 
    {
        return foo.Result;
    }
}

创建new Task时,线程会发生什么。

这意味着新线程(B)开始评估bar(parameter),当主线程(A)转到foo.Result;时,他们会等到B完成并返回Result

1 个答案:

答案 0 :(得分:3)

来自here

  

由其公共构造函数创建的任务被称为“冷”   任务,因为他们在非预定的生命周期开始   TaskStatus.Created状态,直到在这些上调用Start   他们进展到预定的实例

因此,没有&#34;线程B&#34;将开始(此外,&#34; 开始新任务&#34;!=&#34; 开始新线程&#34;在一般情况下)。

  

当主线程(A)转到foo.Result;他们等到B结束并返回结果?

由于没有&#34;线程B&#34;,线程A将永远等待。