东台网站建设找哪家好,家装公司十大口碑排名,网络营销做得好的企业,知乎推广公司前言在.NET Core 中已经广泛使用异步编程#xff0c;代码中充斥着大量的 async 和 await 关键字。但有时候#xff0c;调用一个异步方法时可能会忘了写 await。这会造成什么问题呢#xff1f;问题重现示例代码如下#xff1a;[HttpGet]
public async TaskIEnumerable代码中充斥着大量的 async 和 await 关键字。但有时候调用一个异步方法时可能会忘了写 await。这会造成什么问题呢问题重现示例代码如下[HttpGet]
public async TaskIEnumerableWeatherForecast Get()
{Demo();...
}private async Task Demo()
{await Task.Run(() {Console.WriteLine(My IO);throw new InvalidOperationException();});
}调用Demo方法时没有加上 await 关键字。在命令行下启动 API 并访问发现 API 可以正常返回控制台也有输出但是却没有任何异常提示因此你可能认为Demo方法执行成功了其实并没有。解决方案1.将警告视为错误其实VS 已经发现了问题但是只是提出了警告打开项目的属性窗口在生成面板中找到“将警告视为错误”的选项可以将其设置为所有或者特别指定错误的编号再次编译就会编译失败了。2.分析器你也可以使用专门的分析器来检查这类错误。首先引用 Nuget 包 Lindhart.Analyser.MissingAwaitWarning。然后找到对应的分析器设置“严重性”为“错误”再次编译就会编译失败了。结论现在可以保证执行异步方法时不会遗漏 await 关键字了。想了解更多内容请关注我的个人公众号”My IO“