我有一個主索引Dictionary<int, SolarSystem>
多個小字典的元素和幾個較小Dictionary<int, JumpsHelperClass>
,Dictionary<int, KillsHelperClass>
,等我SolarSystem
類是由這些小助手類JumpsHelperClass
,KillsHelperClass
的,等他們都編入索引由相同的int
鍵。大廈詞典由同一個鍵
問題是,這些較小的字典正在填充異步API調用,而我的主類持有主人Dictionary<int, SolarSystem>
訂閱時獲得通知,當他們獲取新的信息來更新其主列表。但是,不能保證主列表具有更小列表在更新時要執行的所有密鑰。實際上,主字典可能完全是空的。
我已經試過的方法是這樣的:
void JumpsRequest_UpdatedResults(object sender, EventArgs e)
{
foreach (int item in JumpsRequest.JumpsBySolarSystemID.Keys)
{
try
{
SolarSystemsByID[item].Jumps = JumpsRequest.JumpsBySolarSystemID[item];
}
catch (KeyNotFoundException ex)
{
SolarSystemsByID.Add(item, new SolarSystem(JumpsRequest.JumpsBySolarSystemID[item], new HelperClasses.KillsHelperClass()));
}
}
}
但是,這是痛苦的低效。每當JumpsRequest
從api獲取新信息並更新其Dictionary<int, JumpsHelperClass>
時,都會觸發。有沒有一種方法可以以某種方式合併字典,從而避免了每次添加到主服務器時的try catch的開銷。
主字典在任何給定時間都傾向於保存大約4-8k個元素以供參考。
謝謝。