我试图很好地理解异步/等待,并且想清除一些混淆。可有人请解释什么将是下面的执行方面的区别:异步/等待执行差异
// version 1
public Task Copy(string source, string destination) {
return Task.Run(() => File.Copy(source, destination));
}
public async Task Test() {
await Copy("test", "test2");
// do other stuff
}
和:
// version 2
public async Task Copy(string source, string destination) {
await Task.Run(() => File.Copy(source, destination));
}
public async Task Test() {
await Copy("test", "test2");
// ...
}
他们是否导致相同的代码,为什么我会写一个比其他?
可能是一个重复:http://stackoverflow.com/q/21033150/1768303 – Noseratio
@Noseratio是的,这的确是,也Erics答案是一个“大开眼界”,抱歉的dup,没有找到任何东西(不确定如何制定搜索:P) –
@DimitarDimitrov,IMO,除了状态机的开销之外,最主要的区别是[异常传播逻辑](http://stackoverflow.com/a/21082631/1768303) 。 – Noseratio