为什么OnCompleted不在Visual Studio上运行但在LINQPad上运行?

时间:2018-06-02 15:30:36

标签: c#

我试图了解内部如何实现异步。据我所知OnCompleted()没有阻塞。这两行在linqpad上“正确”执行 但是,在Visual Studio上我没有看到:“这将在”之后完成“ 即使有Task.Delay(5000).Wait()

Task.Delay(5000)
    .GetAwaiter()
    .OnCompleted(() => Console.WriteLine("This will be done after"));

Console.WriteLine("This will be done first");

1 个答案:

答案 0 :(得分:1)

在控制台应用程序中,您需要让控制台等待另一个读取,因此您必须在代码末尾使用Console.ReadLine()等待另一个读取,如下所示:

 static void Main(string[] args)
        {

            Task.Delay(5000).GetAwaiter()
            .OnCompleted(() => Console.WriteLine("This will be done after"));

            Console.WriteLine("This will be done first");
            Console.ReadLine();
        }