我正在编写一组异步任务,这些任务会消除下载和解析数据,但是我在下一步更新数据库时遇到了一些空白。将异步任务与阻塞同步任务混合使用
问题是,出于性能的考虑,我使用TableLock来加载相当大的数据集,所以我想要做的是让我的导入服务等待第一个任务返回,开始导入。如果在第一次导入运行时完成另一个任务,则该过程将加入队列并等待任务1的导入服务已完成。
例如,
异步 - 任务1 - 任务2 - 任务3
同步 - ImportService
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](https://msdn.microsoft.com/library/hh228603.aspx“Dataflow(任务并行库)”)。 –
Paulo,那正是我正在寻找的!谢谢! –