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
?
答案 0 :(得分:3)
来自here:
由其公共构造函数创建的任务被称为“冷” 任务,因为他们在非预定的生命周期开始 TaskStatus.Created状态,直到在这些上调用Start 他们进展到预定的实例
因此,没有&#34;线程B&#34;将开始(此外,&#34; 开始新任务&#34;!=&#34; 开始新线程&#34;在一般情况下)。
当主线程(A)转到foo.Result;他们等到B结束并返回结果?
由于没有&#34;线程B&#34;,线程A将永远等待。