0
我想在解析一個大的XML文件後創建一個嵌套的ConcurrentDictionary。 運行下面的代碼時得到的是最內層(tmpDictionaryDid)字典爲空。嵌套ConcurrentDictionary
我想我沒有妥善保存字典或加載不正確,但我不明白什麼是不正確的。
它甚至有可能用ConcurrentDictionary解決它,或者我應該嘗試使用另一種解決方案嗎?
public void temp22db()
{
ConcurrentDictionary<string, ConcurrentDictionary<string, string>> dictionary22 = new ConcurrentDictionary<string, ConcurrentDictionary<string, string>>();
try
{
ConcurrentDictionary<string, string> did = new ConcurrentDictionary<string, string>();
did.TryAdd("F186 1", "test1");
did.TryAdd("F186 2", "test2");
dictionary22.TryAdd("F186", did);
did.TryAdd("EDA0 1", "test3");
did.TryAdd("EDA0 2", "test4");
dictionary22.TryAdd("EDA0", did);
string test;
did.TryGetValue("EDA0 1", out test);
Helper.logInWindow("This works " + test);
}
catch (Exception e)
{
Helper.logInWindow("SDDBTemp: " + e.Message);
}
ecuDictionary2.TryAdd("1638", dictionary22);
}
public string getDIDInterpretation()
{
string outStr = "";
ConcurrentDictionary<string, ConcurrentDictionary<string, string>> tmpDictionary;
ecuDictionary2.TryGetValue("1638", out tmpDictionary);
if (tmpDictionary != null)
{
ConcurrentDictionary<string, string> tmpDictionaryDid;
tmpDictionary.TryGetValue("EDA0", out tmpDictionaryDid);
if (tmpDictionaryDid != null)
{
tmpDictionaryDid.TryGetValue("EDA0 1", out outStr);
}
}
Helper.logInWindow("Why U no work? " + outStr);
return outStr;
}
你應該儘量避免嵌套concurrentdictionaries - 你會碰到更多的併發與此相關的問題。嘗試將嵌套關鍵字組合成只有一個關鍵字,例如代替字典[key1] [subkey1],將其存儲爲字典[key1 + subkey1] – jaminto