我正在編寫一組異步任務,這些任務會消除下載和解析數據,但是我在下一步更新數據庫時遇到了一些空白。將異步任務與阻塞同步任務混合使用
問題是,出於性能的考慮,我使用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,那正是我正在尋找的!謝謝! –