我的服务器代码中有很多异步方法,但我怀疑我有调用者而无需等待。
是否有一种简单的方法来扫描代码以查找缺少等待的呼叫?
public async Task DomeSomethingAsync()
{
var result = await GetResult();
await StoreResult(result);
}
然后,我忘记使用的某个地方等待;
public async Task SomeBuggyCode()
{
await Initialize();
DoSomethingAsync(); // DOH - Forgot await
}
我希望有一个聪明的方法来识别这些错误的电话。
发布于 2016-05-16 05:10:39
这应该显示为编译器警告CS4014,文本如下:
由于没有等待此调用,因此在调用完成之前,将继续执行当前方法。考虑将“等待”操作符应用于呼叫的结果。
请参阅文献资料
所以,您需要做的就是编译代码。VS应该允许您从错误列表导航到相关位置。
发布于 2020-08-06 15:46:34
如果缺少的“等待”是编译器知道是异步的方法,则将生成CS4014警告。
如果您错过了通过接口或外部库调用异步方法时的等待,它将无法工作。
因此,安装这个nuget包是值得的:https://www.nuget.org/packages/Lindhart.Analyser.MissingAwaitWarning/
在不等待返回任务的方法的任何情况下,这将引发警告
发布于 2016-05-16 05:11:02
找到它们的最简单的方法就是编译代码。
任何具有异步但不等待其内部的函数都将导致编译器警告CS4014,一旦您编译了项目,查看警告列表,您将看到需要修复的所有函数。
https://stackoverflow.com/questions/37254643
复制