2
基于下面的代码,我的期望是,控制台会发出任务执行去哪里?
- SayTaskHelloCalled
- 任务执行
- SayHelloAfterSleepTask
但任务不运行。只有第一行发出控制台。请建议为什么?
static void Main(string[] args)
{
var task2 = SayHelloTask();
var result = task2.Result;
Console.WriteLine(result);
}
public static Task<string> SayHelloTask()
{
Thread.Sleep(2000);
Console.WriteLine("SayHelloTaskCalled");
return new Task<string>(() => {
Console.WriteLine("Task Executing");
return "SayHelloAfterSleepTask";
});
谢谢..如果我想从调用代码开始冷任务..比方说,由于某种原因,我想调用者决定何时启动发动机需要什么样的变化:) – helloworld
@helloworld更新我的答案。希望有所帮助。但我建议不要将冷任务用于公共方法。因为几乎每个.NET框架方法都返回一个Task是一个热门任务。返回冷任务会造成不必要的混淆。 –
哦..它有一个开始()..漂亮简洁:)非常感谢..只是一个额外的查询..什么具体区别是有返回任务 V/S异步任务 ..因为任务已经是背景。 。我的原始查询被回答虽然..谢谢 –
helloworld