异步等待与等待 task.run

asyn await vs await task.run

使用 asyn/await 与 await task.run()

有什么区别

等待task.run例子-

 public static void Main()
{

   await Task.Run(() =>
    {
        return "Good Job";
    });
    method1();
    method2();
}

异步等待示例-

 public static async void Launch()
    {

        await GetMessage();
        Method1();
        Method2();
    }

    public static async Task<string> GetMessage()
    {
        //Do some stuff
    }

区别在于代码的上下文 运行。 return "Good Job"; 将在单独的任务中立即执行(并且可能在单独的线程上 - 这由默认任务调度程序确定,如 ThreadPool)。在第二个中,第一个 await 之前的 GetMessage 中的所有代码将在与调用者相同的上下文中同步执行。 await 之后的其余代码将委托给单独的任务。