如何保证执行异步方法时不会遗漏 await 关键字
生活随笔
收集整理的這篇文章主要介紹了
如何保证执行异步方法时不会遗漏 await 关键字
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
在.NET Core 中已經廣泛使用異步編程,代碼中充斥著大量的 async 和 await 關鍵字。
但有時候,調用一個異步方法時可能會忘了寫 await。
這會造成什么問題呢?
問題重現
示例代碼如下:
[HttpGet] public?async?Task<IEnumerable<WeatherForecast>>?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“
總結
以上是生活随笔為你收集整理的如何保证执行异步方法时不会遗漏 await 关键字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C#/.NET】.NET6中全局异常处
- 下一篇: Avalonia跨平台入门第十二篇之动画