为何Blazor中AsyncEventHandler方法可返回void或Task?
Blazor AsyncEventHandler 回调的返回值问题解答
- Blazor 中的
AsyncEventHandler是专为组件事件声明设计的回调结构体,它允许开发者传入两种类型的方法:返回Task的异步方法,以及返回void的同步方法。 - 当你把一个同步void方法分配给预期返回
Task的AsyncEventHandler时,Blazor 内部会自动将这个方法包装为一个已完成的Task(即返回Task.CompletedTask)。 - 这种设计的目的是统一事件回调的处理逻辑:不管传入的是同步还是异步方法,调用方都可以用异步的方式处理,不用额外编写适配代码。
- 需要明确:这里的void方法是纯同步方法,和
async void异步方法完全不同。async void是.NET中用于顶级事件的特殊写法,Blazor对它的处理逻辑有区别——会单独捕获其异步执行中的异常,而同步void方法则直接被包装为已完成Task返回。
内容的提问来源于stack exchange,提问作者David Thielen
相关产品推荐
相关产品推荐

