为了账号安全,请及时绑定邮箱和手机立即绑定

在异步方法结束时,我应该返回还是等待?

在异步方法结束时,我应该返回还是等待?

C#
婷婷同学_ 2019-08-28 09:37:40
在异步方法结束时,我应该返回还是等待?在任务返回异步方法结束时,如果我调用另一个异步方法,我可以使用await它或return它的任务。每个的后果是什么?    Task FooAsync()     {         return BazAsync();  // Option A     }     async Task BarAsync()     {         await BazAsync(); // Option B     }
查看完整描述

2 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

如果声明方法本身,则无法返回任务async- 因此这不起作用,例如:

async Task BarAsync(){
    return BazAsync(); // Invalid!}

那将需要返回类型Task<Task>

如果你的方法只是做了少量的工作,然后调用一个异步方法,那么你的第一个选项很好,这意味着涉及的任务少了一个。您应该知道,同步方法中抛出的任何异常都将同步传递 - 实际上,这是我更喜欢处理参数验证的方式。

它也是实现重载的常见模式,例如通过取消令牌。

请注意,如果您需要更改为等待其他内容,则需要将其设置为异步方法。例如:

// Version 1:Task BarAsync(){
    // No need to gronkle yet...
    return BazAsync();}// Oops, for version 2 I need to do some more work...async Task BarAsync(){
    int gronkle = await GronkleAsync();
    // Do something with gronkle

    // Now we have to await BazAsync as we're now in an async method
    await BazAsync();}


查看完整回答
反对 回复 2019-08-28
  • 2 回答
  • 0 关注
  • 456 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信