我試圖很好地理解異步/等待,並且想清除一些混淆。可有人請解釋什麼將是下面的執行方面的區別:異步/等待執行差異
// 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