【发布时间】:2023-03-23 05:32:01
【问题描述】:
我有一个void 事件处理程序,它只包含一行调用awaitable 方法的行。
void Handler( object sender, EventArgs args ) => AwaitableMethod();
将返回类型更改为Task 不是一种选择,因此无论语法糖如何,它都是一劳永逸的。即便如此,Visual Studio 在 unawaited 调用下放置了一个绿色波浪线,建议我调用处理程序 async void 和 await。
async void Handler( object sender, EventArgs args ) => await AwaitableMethod();
我的理解是,在这种情况下添加 async void 和 await 只是无用的开销。 Visual Studio 是否知道一些我不知道的事情,还是只是不必要地烦人?
【问题讨论】:
-
如果从
AwaitableMethod返回的Task最终包含异常,则不同。第一个案例会默默吞下它;第二个将重新抛出它。您最好使用第二个选项,并意识到发生了异常。 -
@canton7 感谢您的提示!我必须重新回忆一下异常如何与
async-await一起工作。
标签: c# asynchronous async-await task task-parallel-library