首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在解决方案中寻找失踪等待

在解决方案中寻找失踪等待
EN

Stack Overflow用户
提问于 2016-05-16 13:05:33
回答 7查看 5.1K关注 0票数 6

我的服务器代码中有很多异步方法,但我怀疑我有调用者而无需等待。

是否有一种简单的方法来扫描代码以查找缺少等待的呼叫?

代码语言:javascript
代码运行次数:0
运行
复制
public async Task DomeSomethingAsync() 
{
     var result = await GetResult();
     await StoreResult(result);
}

然后,我忘记使用的某个地方等待;

代码语言:javascript
代码运行次数:0
运行
复制
public async Task SomeBuggyCode()
{
     await Initialize();
     DoSomethingAsync();  // DOH - Forgot await
}

我希望有一个聪明的方法来识别这些错误的电话。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2016-05-16 13:10:39

这应该显示为编译器警告CS4014,文本如下:

由于没有等待此调用,因此在调用完成之前,将继续执行当前方法。考虑将“等待”操作符应用于呼叫的结果。

请参阅文献资料

所以,您需要做的就是编译代码。VS应该允许您从错误列表导航到相关位置。

票数 9
EN

Stack Overflow用户

发布于 2020-08-06 23:46:34

如果缺少的“等待”是编译器知道是异步的方法,则将生成CS4014警告。

如果您错过了通过接口或外部库调用异步方法时的等待,它将无法工作。

因此,安装这个nuget包是值得的:https://www.nuget.org/packages/Lindhart.Analyser.MissingAwaitWarning/

在不等待返回任务的方法的任何情况下,这将引发警告

票数 5
EN

Stack Overflow用户

发布于 2016-05-16 13:11:02

找到它们的最简单的方法就是编译代码。

任何具有异步但不等待其内部的函数都将导致编译器警告CS4014,一旦您编译了项目,查看警告列表,您将看到需要修复的所有函数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37254643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档