【发布时间】:2015-02-20 08:55:59
【问题描述】:
有一个并发字典,它从不同来源收集信息,每分钟刷新一次,并将收集到的数据传递给另一个处理程序。
var currentDictionarySnapshot = _currentDictionary;
_currentDictionary = new ConcurrentDictionary<int, string>();
return new ReadOnlyDictionary<int, string>(currentDictionarySnapshot);
我需要让currentDictionarySnapshot 等待所有对其有引用的线程完成写入并在之后创建新的ReadOnlyDictionary。
ConcurrentDictionary 本身是否支持它,如果不支持,我该如何提供?
【问题讨论】:
-
你可以考虑使用
Task.WhenAll(Task1, Task2,...);方法 -
我的写法不是异步的,就算是异步的,也分不清主字典和快照的任务。
标签: c# multithreading concurrency concurrentdictionary