【发布时间】:2015-07-09 23:09:20
【问题描述】:
我正在编写一组异步任务来消除下载和解析数据,但是我在下一步更新数据库时遇到了一些空白。
问题是,为了提高性能,我使用 TableLock 来加载相当大的数据集,所以我想做的是让我的导入服务等待第一个任务返回,然后开始导入。如果另一个任务在第一次导入运行时完成,该进程将加入队列并等待任务 1 的导入服务完成。
例如。
异步 - 任务1 - 任务2 - 任务3
同步 - 进口服务
RunAsync 任务
Task3 returns first > ImportService.Import(Task3)
Task1 return, ImportService is still running. Wait()
ImportService.Complete() event
Task2 returns. Wait()
ImportService.Import(Task1)
ImportService.Complete() event
ImportService.Import(Task2)
ImportService.Complete() event
希望这是有道理的!
【问题讨论】:
-
你可能应该考虑TPL DataFlow。
-
保罗,这正是我想要的!谢谢!
标签: c# asynchronous async-await