在 .Net 4.5 中,Microsoft 添加了新的 Async/Await
功能以简化异步编码。但是,我想知道
Async/Await
能否完全替代旧的使用方式线程
?Async/Await
是否能够执行Thread
可以执行的任何操作 异步?Async/Await
能否仅与WebClient.DownloadStringAsync
等方法一起使用,或者我能否转换任何同步方法以使其使用Async/Await
而不是阻塞主线程?
最佳答案
can it completely replace the old way of using Threads ?
没有。一个线程可以做很多更有用的事情。 Await 专门用于处理需要时间的事情,最典型的是 I/O 请求。传统上,这是在 I/O 请求完成时通过回调完成的。编写依赖于这些回调的代码非常困难,await 大大简化了它。
capable of doing what ever a Thread can do asynchronously ?
大致上。 Await 只负责处理延迟,它不会做任何线程所做的事情。 await 表达式,位于 await 关键字右侧,用于完成工作。理想情况下,它根本不使用线程,它发布一个驱动程序请求,一旦驱动程序完成数据传输,它就会生成一个完成通知回调。网络是迄今为止最常见的用法,数百毫秒的延迟是常见的,并且是服务从桌面或 LAN 迁移到“云”的不可避免的副作用。同步使用此类服务会使 UI react 迟钝。
only can be used with some methods like WebClient.DownloadStringAsync
没有。您可以将它与任何返回任务的方法一起使用。 XxxxAsync() 方法只是 .NET 框架中用于需要时间的常见操作的预制方法。就像从 Web 服务器下载数据一样。
关于c# - 异步/等待与线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15148852/