首页 > 后端开发 > C++ > 为什么我应该避免在 C# 中使用 Async Void 方法?

为什么我应该避免在 C# 中使用 Async Void 方法?

Mary-Kate Olsen
发布: 2024-12-31 06:07:08
原创
625 人浏览过

Why Should I Avoid Async Void Methods in C#?

Async Void 的陷阱:详细解释

Async void 方法已被证明是一种糟糕的编码实践。本文参考著名文章“避免 Async Void”,深入探讨了为什么会出现这种情况。

避免 Async Void 的原因

  • 错误处理差异:
    与同步方法不同,async void 方法以不同的方式处理异常。 async void 方法中发生的异常可能不会向上传播,并且很难捕获。
  • 组合挑战:
    Async void 方法阻碍代码组织和重用。由于这些方法不返回任务,因此很难将它们组合成更大的异步工作流程。
  • 可测试性困难:
    测试 async void 方法本身就是一项任务。它需要仔细的规划,以确保代码及其潜在异常的适当覆盖。

其他注意事项

Async void 被认为是异步领域的异常/等待语言。大多数语言(包括 F#、Python、JavaScript 和 TypeScript)都不支持它。它包含在 C#/VB 中主要是为了适应异步事件处理程序。

首选方法

在您的示例中,如果您调整代码以利用 async void 事件处理程序:

protected override async void OnLoad(EventArgs e)
{
    if (CustomTask == null)
        await PrimeCustomTask();
}

private async Task PrimeCustomTask()
{...}
登录后复制

那么 async void 的弊端将仅限于事件处理程序,使得异常处理、组合和测试更易于管理。

以上是为什么我应该避免在 C# 中使用 Async Void 方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

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