开始异步操作,然后等待

道格·琼斯

我现在才开始玩异步并等待。我有8个单独的数据库调用,其中一些依赖于其他数据库。我希望能够启动3个异步方法,然后当某个返回1时,启动其他3个,然后当某个返回1时,再启动2个。我目前正在使用3个Parallel.Invoke方法来完成此操作,但是每个并行都必须等待所有方法返回。我只关心返回的一种方法,其他方法可以在后台运行,直到await Task.WhenAll(t1,t2,t3,...,t6)最后一个。有没有办法通过异步/等待来实现这一目标?

我知道await不会阻塞,但是它将停止执行我的main方法(带有8个db调用),直到该方法返回值为止(就像同步方法一样)。

斯蒂芬·克莱里

您可以Task.WhenAny用来等待以下任一项任务:

var completedTask = await Task.WhenAny(t1, t2, t3, ...);

如果您有一个更复杂的依赖关系结构,那么我建议使用如下async方法来表示

static async Task DoMasterOperationAsync()
{
  var result = await StartSomething();
  await Task.WhenAll(DoComplexOperationAsync(), result.NextT1Async());
}

static async Task DoComplexOperationAsync()
{
  var result1 = await T1Async();
  await Task.WhenAll(result1.NextT1Async(), result1.NextT2Async(), result1.NextT3Async());
}

await Task.WhenAll(DoMasterOperationAsync(), t2, t3, ...);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

开始异步操作,然后等待

来自分类Dev

异步/等待还是以TcpListener开始/结束?

来自分类Dev

在RxJS Observable的onNext中等待异步操作

来自分类Dev

不处理异步操作时应在哪里等待?

来自分类Dev

等待异步操作在Swift中完成

来自分类Dev

等待Ajax功能完成,然后再开始新的功能

来自分类Dev

立即等待异步操作

来自分类Dev

'收藏被修改;枚举操作可能无法使用异步/等待执行

来自分类Dev

等待异步数据,然后在AngularJS和Ionic上呈现列表

来自分类Dev

等待,然后使用VelocityJS重新开始动画

来自分类Dev

运行任务,执行某些操作,然后等待?

来自分类Dev

asio-等待异步操作完成

来自分类Dev

“异步任务然后等待任务”与“任务然后返回任务”

来自分类Dev

等待异步功能,然后返回

来自分类Dev

React Redux-等待异步api调用完成,然后分派下一个操作

来自分类Dev

如何在开始异步操作和在循环中等待其结果之间有一个宽限期?

来自分类Dev

如何使Lambda函数等待异步操作完成?

来自分类Dev

异步等待CPU计算与IO操作的用法?

来自分类Dev

我可以等待异步步骤完成,然后返回吗?

来自分类Dev

等待Ajax功能完成,然后再开始新的功能

来自分类Dev

异步首先完成,然后mainActivity开始

来自分类Dev

排序异步操作,然后调用onResult

来自分类Dev

等待,然后使用VelocityJS重新开始动画

来自分类Dev

等待任何任务完成,然后开始新的任务

来自分类Dev

等待,然后在FOR-JS处开始新循环

来自分类Dev

等待异步操作,然后使用NodeJ在Express中执行渲染

来自分类Dev

Dart异步执行其他操作然后等待

来自分类Dev

反应:shouldComponentUpdate等待异步操作

来自分类Dev

如何开始动画,等待“X”秒然后撤消动画?

Related 相关文章

  1. 1

    开始异步操作,然后等待

  2. 2

    异步/等待还是以TcpListener开始/结束?

  3. 3

    在RxJS Observable的onNext中等待异步操作

  4. 4

    不处理异步操作时应在哪里等待?

  5. 5

    等待异步操作在Swift中完成

  6. 6

    等待Ajax功能完成,然后再开始新的功能

  7. 7

    立即等待异步操作

  8. 8

    '收藏被修改;枚举操作可能无法使用异步/等待执行

  9. 9

    等待异步数据,然后在AngularJS和Ionic上呈现列表

  10. 10

    等待,然后使用VelocityJS重新开始动画

  11. 11

    运行任务,执行某些操作,然后等待?

  12. 12

    asio-等待异步操作完成

  13. 13

    “异步任务然后等待任务”与“任务然后返回任务”

  14. 14

    等待异步功能,然后返回

  15. 15

    React Redux-等待异步api调用完成,然后分派下一个操作

  16. 16

    如何在开始异步操作和在循环中等待其结果之间有一个宽限期?

  17. 17

    如何使Lambda函数等待异步操作完成?

  18. 18

    异步等待CPU计算与IO操作的用法?

  19. 19

    我可以等待异步步骤完成,然后返回吗?

  20. 20

    等待Ajax功能完成,然后再开始新的功能

  21. 21

    异步首先完成,然后mainActivity开始

  22. 22

    排序异步操作,然后调用onResult

  23. 23

    等待,然后使用VelocityJS重新开始动画

  24. 24

    等待任何任务完成,然后开始新的任务

  25. 25

    等待,然后在FOR-JS处开始新循环

  26. 26

    等待异步操作,然后使用NodeJ在Express中执行渲染

  27. 27

    Dart异步执行其他操作然后等待

  28. 28

    反应:shouldComponentUpdate等待异步操作

  29. 29

    如何开始动画,等待“X”秒然后撤消动画?

热门标签

归档