【发布时间】:2018-10-15 17:08:40
【问题描述】:
我在这里阅读了一些链接,但我无法回答我的问题。
我想要实现的是将 Parallel.ForEach 的结果添加到 ConcurrentDictionary 中。但是,我如何确定我添加的是迭代结果而不是空值?
我的意思是:我想在操作完成后添加变量。我担心我可能会添加一个空值(即:向集合中添加一个不完整的迭代)。
我的代码如下。 感谢您的任何提示。
我也读过关于使用锁比 ConcurrentDictionary 更快的文章,但我认为在我的情况下它不会产生显着差异。
提前致谢。
public Dictionary<string,IMagickImage> ComposedImages { get; private set; }
public ParallelImageComposer(Dictionary<string,MagickImage> InputImages, MagickImage InkZoneImage, int OrientationNumber)
{
var resultCollection = new ConcurrentDictionary<string, IMagickImage>();
Parallel.ForEach(InputImages, CurrentKeyValuePair =>
{
var img = new ImageComposer(InkZoneImage, CurrentKeyValuePair.Value, OrientationNumber).ComposedImage;
resultCollection.TryAdd(CurrentKeyValuePair.Key, img);
});
ComposedImages = resultCollection.ToDictionary(x => x.Key, x => x.Value);
【问题讨论】:
标签: c# multithreading parallel-processing concurrentdictionary parallel-foreach