私は 1 つのマスターDictionary<int, SolarSystem>
といくつかの小さなDictionary<int, JumpsHelperClass>
,Dictionary<int, KillsHelperClass>
などを持っています。私SolarSystem
のクラスは、これらの小さなヘルパー クラスJumpsHelperClass
,KillsHelperClass
などで構成されています。それらはすべて同じint
キーでインデックス付けされています。
問題は、これらの小さな辞書が非同期 API 呼び出しによって取り込まれ、マスターDictionary<int, SolarSystem>
サブスクライブを保持する私のマスター クラスが、マスター リストを更新するための新しい情報を取得したときに通知されることです。ただし、マスター リストを更新するときに、小さいリストに含まれるすべてのキーがマスター リストに含まれているという保証はありません。実際、マスター Dictionary は完全に空である可能性があります。
私はこのようなアプローチを試みました:
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 の要素を保持する傾向があります。
ありがとう。