如何从非异步代码中获取有关未等待任务的警告

tra*_*ter 0 .net c# task async-await

如果我忘记等待从非异步方法中的异步方法返回的任务,我不会收到警告。由于未观察到的异常,这导致我的代码中存在一些未被发现的错误。

如果调用方法是异步的,我确实会收到警告,但如果调用方法是非异步的,我会收到同样的警告。

我知道您不能等待非异步方法,解决方法是使调用方法异步,然后等待它。但我想要一个警告,让我知道我应该这样做。

在这种情况下,有没有办法让 c# 编译器生成警告?

未等待的任务缺少警告

tra*_*ter 5

Mirosoft.VisualStudio.Threading roslyn 分析器针对以下情况生成警告:

https://www.nuget.org/packages/Microsoft.VisualStudio.Threading.Analyzers

它会产生以下警告:

警告 VSTHRD110:通过等待该方法调用、分配给变量或将其传递给另一个方法来观察该方法调用的可等待结果

可以通过添加以下内容将其包含在您的项目中:

<PackageReference Include="Microsoft.VisualStudio.Threading.Analyzers" Version="17.5.22">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
Run Code Online (Sandbox Code Playgroud)

如果使用 vs4mac,您可能需要清理并重建才能收到警告才能开始工作。