在 .Net 4.5 中,微软添加了新的Async/Await
简化异步编码的功能。然而,我想知道
- Can
Async/Await
完全取代旧的使用方式Threads
?
- Is
Async/Await
有能力做任何事Thread
可以做
异步?
- Can
Async/Await
只能与某些方法一起使用,例如WebClient.DownloadStringAsync
或者我可以转换任何同步方法以使其使用Async/Await
并且不阻塞主线程?
它可以完全取代旧的使用线程的方式吗?
不,线程可以做更多有用的事情。 Await 是专门用来处理某物需要时间,最典型的是 I/O 请求。传统上,这是在 I/O 请求完成时通过回调完成的。编写依赖这些回调的代码相当困难,await 大大简化了它。
能够做线程可以异步做的事情吗?
大致。 Await 只是负责处理延迟,它不会执行线程执行的任何操作。等待中表达,await 关键字右侧的内容就是完成工作的内容。理想情况下,它根本不使用线程,它会发布驱动程序请求,一旦驱动程序完成数据传输,它就会生成完成通知回调。网络是迄今为止最常见的用法,数百毫秒的延迟很常见,也是服务从桌面或 LAN 迁移到“云”时不可避免的副作用。同步使用此类服务会使 UI 变得非常无响应。
只能与 WebClient.DownloadStringAsync 等某些方法一起使用
不。您可以将它与任何返回任务的方法一起使用。 XxxxAsync() 方法只是 .NET 框架中为需要时间的常见操作预先准备的方法。就像从网络服务器下载数据一样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)