我正在尝试学习.NET 4.5的异步和等待功能。首先,这是我的代码:
static async void Method()
{
await Task.Run(new Action(DoSomeProcess));
Console.WriteLine("All Methods have been executed");
}
static void DoSomeProcess()
{
System.Threading.Thread.Sleep(3000);
}
static void Main(string[] args)
{
Method();
//Console.WriteLine("Method Started");
Console.ReadKey();
}
这段代码在控制台上没有输出任何结果。我不明白为什么。我的意思是任务不应该只是不阻塞的线程吗? 但是,如果我取消注释主方法中的Console.WriteLine(),似乎一切都正常了。
有人能告诉我这里发生了什么吗?
async void
方法,因为无法等待其完成。但在这种特定情况下,您的代码将正常工作(除非在睡眠完成之前按下Enter键)。 - svick