JetBrains Rider 2025.2 Help

代码检查:避免在返回类型为 'void' 且没有类型为 'System.EventArgs' 参数的方法和函数中使用 'async'

此检查会检测将 异步 修饰符与 void 返回类型一起使用,但方法不接受类型为 System.EventArgs 参数的方法和函数。 不建议使用此类方法,因为这些方法中的未处理异常无法被 await,可能导致应用程序崩溃。

public async void Foo(Task<int> task) { Process(await task); } public void Process(int i) {}
public async void Foo(Task<int> task) { try { Process(await task); } catch (Exception e) { throw; // TODO handle exception } } public void Process(int i) {}

快速修复会将 async void 方法的主体包装在一个 try-catch 块中。 这可确保捕获方法中抛出的任何异常,避免未处理异常导致应用程序崩溃。 根据应用程序的具体需求,您可以将 throw; 语句替换为自定义错误处理逻辑。

虽然此快速修复通过捕获异常使 async void 方法更加安全,但除非是事件处理程序等必须使用 void 的特定场景,否则通常更好的做法是将 异步 方法的返回类型设置为 任务

最后修改日期: 2025年 9月 26日