【发布时间】:2016-10-27 06:53:09
【问题描述】:
快速提问..
为了对异步编程和await有一些扎实的基础了解,我想知道这两个代码sn-ps在多线程以及执行顺序和时间方面有什么区别:
这个:
public Task CloseApp()
{
return Task.Run(
()=>{
// save database
// turn off some lights
// shutdown application
});
}
对比:
public async Task CloseApp()
{
await Task.Run(
()=>{
// save database
// turn off some lights
// shutdown application
});
}
如果我在这个例程中调用它:
private async void closeButtonTask()
{
// Some Task 1
// ..
await CloseApp();
// Some Task 2
// ..
}
【问题讨论】:
-
它们在异常的包装方式上有细微的差别
-
closeButtonTask 应该返回 Task 而不是 void。
-
我整理的这个sharplab sample 显示了底层机制。
标签: c# multithreading asynchronous