这两个方法返回Task的区别

时间:2016-07-26 10:51:15

标签: c# async-await

这两种方法之间的语义差异是什么?

UPDATE target_table T
SET T.m_value = (SELECT T1.m_value FROM target_table T1 WHERE T1.id = '1')

我是否应该考虑在一个或另一个之间做出选择?

1 个答案:

答案 0 :(得分:7)

实际差异是:

  1. 第一种方法将调用Task.Run并返回结果任务
  2. 第二种方法将转换为异步状态机,它将调用Task.Run,然后排队继续,当此任务完成时,将继续执行您的方法
  3. 就“我应该选择哪一个”而言,这是我使用的一般准则:

      

    如果您要完成与任务相关的所有方法,请返回不要使用async/await
      相反,如果您需要“等待”任务完成,那么请执行更多操作,然后使用async/await

    我确信这有例外,但我还没找到。

    在这两种方法中,选择第一种方法。

相关问题