事件处理程序中的 Async void 与任务丢弃语法

问题描述 投票:0回答:1

事件处理程序调用异步代码的位置:

MyObject.MyEvent += MyHandler;

使用其中一种模式相对于另一种模式有什么优势吗?:

// option 1: async void + await
private async void MyHandler(object sender, EventArgs args)
{
  await DoSomethingAsync();
  DoSomethingElse();
}

// option 2: void + discard syntax
private void MyHandler(object sender, EventArgs args)
{
  _ = DoSomethingAsync();
  DoSomethingElse();
}
c# async-await event-handling
1个回答
0
投票

如果是选项 1

DoSomethingElse()
将仅在
DoSomethingAsync()
完成执行后执行。

如果是选项 2

DoSomethingElse()
将不会等待
DoSomethingAsync()
完成。

© www.soinside.com 2019 - 2024. All rights reserved.