事件处理程序调用异步代码的位置:
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();
}
如果是选项 1
DoSomethingElse()
将仅在 DoSomethingAsync()
完成执行后执行。
如果是选项 2
DoSomethingElse()
将不会等待 DoSomethingAsync()
完成。