Should I avoid 'async void' event handlers?

后端 未结 4 2109
-上瘾入骨i
-上瘾入骨i 2020-11-22 16:19

I know it is considered generally a bad idea to use fire-and-forget async void methods to start tasks, because there is no track of the pending task and it is t

4条回答
  •  忘掉有多难
    2020-11-22 16:49

    The guideline is to avoid async void except when used in an event handler, so using async void in an event handler is OK.

    That said, for unit testing reasons I often like to factor out the logic of all async void methods. E.g.,

    public async Task OnFormLoadAsync(object sender, EventArgs e)
    {
      await Task.Delay(2000);
      ...
    }
    
    private async void Form_Load(object sender, EventArgs e)
    {
      await OnFormLoadAsync(sender, e);
    }
    

提交回复
热议问题