首页 > 后端开发 > C++ > C# 中的异步/等待:等待还是不等待? 对执行的影响

C# 中的异步/等待:等待还是不等待? 对执行的影响

Susan Sarandon
发布: 2025-01-12 13:22:43
原创
903 人浏览过

Async/Await in C#:  To Await or Not to Await?  The Impact on Execution

C# 中 Async/Await 的使用:等待还是不等待?对执行的影响

以下代码包含六次对 Callee 方法的调用,其执行方式各有不同:

  1. 异步调用(Fire-and-forget): Callee 方法被异步调用,不进行等待。方法在后台异步运行,调用方法立即继续执行。

  2. 等待异步调用: Callee 方法被调用并使用 await 等待其完成。调用方法会等待 Callee 方法执行完毕后再继续执行后续代码。确保 Callee 方法完成后才执行其后的代码。

  3. 使用 Task.Run 的异步调用: Callee 方法使用 Task.Run 启动,但不等待结果。与情况 1 相同,Callee 方法在后台运行,调用方法立即继续执行。

  4. 使用 Task.Run 并等待异步调用: Callee 方法使用 Task.Run 启动,并等待结果。这与情况 2 等效,调用方法等待 Callee 方法完成之后才继续执行。

  5. 使用 Task.Run 和 async 的异步调用: 与情况 3 相同,只是 Callee 方法声明为 asyncasync 关键字允许方法以异步方式调用,即使它被 Task.Run 包装。

  6. 使用 Task.Run 和 async 并等待异步调用: 与情况 4 相同,只是 Callee 方法声明为 async。同样,async 关键字允许等待方法,即使它被 Task.Run 包装。

总结:这些调用的底层逻辑如下:

  • 情况 1 和 3: Callee 方法在后台线程上运行,调用方法立即继续执行。

  • 情况 2 和 4: 调用方法等待 Callee 方法完成之后才执行其后的代码。

  • 情况 5 和 6: 这些是使用 Task.Run 进行额外并行处理的异步调用。但是,async 关键字允许根据需要等待它们。

以上是C# 中的异步/等待:等待还是不等待? 对执行的影响的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板