【发布时间】:2023-03-24 18:55:01
【问题描述】:
如果一个方法被声明为'async',当我们调用那个方法时,我们可以使用await或者不使用它。我想知道什么时候用它,用它有什么效果。
【问题讨论】:
-
你正在倒退:只有在需要使用
await时才应该使用async。当您需要异步等待某些操作时,您可以使用await。
标签: c# .net-4.5 async-await
如果一个方法被声明为'async',当我们调用那个方法时,我们可以使用await或者不使用它。我想知道什么时候用它,用它有什么效果。
【问题讨论】:
await 时才应该使用async。当您需要异步等待某些操作时,您可以使用await。
标签: c# .net-4.5 async-await
async 关键字只是向编译器指示该方法可能包含等待语句。
Eric Lippert 有一篇有趣的帖子解释了设计选择
要求“异步”意味着我们可以一次性消除所有向后兼容性问题;任何包含 await 表达式的方法都必须是“新构造”代码,而不是“旧工作”代码,因为“旧工作”代码从来没有 async 修饰符。
http://blogs.msdn.com/b/ericlippert/archive/2010/11/11/whither-async.aspx
【讨论】:
标记的异步方法通常使用 await 来指定暂停点。 await 运算符告诉编译器,在等待的异步过程完成之前,异步方法不能继续超过该点。同时,控制权返回给异步方法的调用者。
换句话说,如果你正在做 asyncronius 编程并且想要同时运行某些线程任务,你会想要依赖 async 和 await
这里有更详细的解释
http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx
【讨论】: