1
我不明白我的代碼是如何出了錯這裏有一個代碼塊:parallel.foreach和字典集合
var filter=new dictionary<string,dictionary<string,bool>>();
//data here is of type dictionary<string,bool>
Parallel.Foreach(data,t=>
{
var filter1=data.Where(p=>p.Value).ToDictionary(p=>p.Key,p=>p.Value);
filter.Add(t.key,filter1);
});
有時候,最終過濾器中有一個空的關鍵,如果我用了這從來沒有發生過一個簡單的循環。
謝謝你,工作,但你能告訴我爲什麼該方法的表現就像是,我就算是同時添加數據,有數據沒有空的關鍵原因,那麼並行類如何創建一些本不應該存在的虛構任務 – JokingBear
@JokingBear當字典被同時修改時,其內部數據結構將變得無效,特別是當桶重新平衡時。併發更新會寫入彼此的數據,因此即使非'null'項已提供給「Add」方法,鍵和/或值也會顯示爲「null」。事實上,你不能合法地向字典傳遞'null'鍵而不觸發異常。 – dasblinkenlight