异步等待与等待 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
之后的其余代码将委托给单独的任务。
使用 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
之后的其余代码将委托给单独的任务。