Task
使用其中一个构造函数创建一个新程序可以为您提供"冷任务".这意味着任务尚未启动.由于您从未启动过任务,因此您看不到预期的输出.
你需要打电话Task.Start
来启动它.要返回"热任务"(已启动任务),您需要使用Task.Factory.StartNew
或Task.Run
.
以下应该工作:
public static TaskSayHelloTask() { Thread.Sleep(2000); Console.WriteLine("SayHelloTaskCalled"); return Task.Run(() => { Console.WriteLine("Task Executing"); return "SayHelloAfterSleepTask"; }); }
如果您更喜欢将Task作为"Cold Task"本身,那么请修改您的调用代码,如下所示.
static void Main(string[] args) { var task2 = SayHelloTask(); task2.Start();//<--Start a "Cold task" var result = task2.Result; Console.WriteLine(result); }