次のオブジェクトがあります。
Dictionary<string, List<SubmitSm>> smDic
これはグローバル変数です。
他のスレッドが同じアクションを実行している間に、smDic からそのスレッドのローカル オブジェクトに項目を読み取り、コピーされた項目を smDic から削除することの影響/意味は何ですか? アイテムの読み取りと削除を行う各スレッドは、特定の辞書キーを持つアイテムのみを読み取ることができます (1 対 1 の関係です)。
次のオブジェクトがあります。
Dictionary<string, List<SubmitSm>> smDic
これはグローバル変数です。
他のスレッドが同じアクションを実行している間に、smDic からそのスレッドのローカル オブジェクトに項目を読み取り、コピーされた項目を smDic から削除することの影響/意味は何ですか? アイテムの読み取りと削除を行う各スレッドは、特定の辞書キーを持つアイテムのみを読み取ることができます (1 対 1 の関係です)。
その場合は a を使用することをお勧めしますSystem.Collections.Concurrent.ConcurrentDictionary
。また、IDictionary
インターフェイスを実装し、追加と削除を実行するためにスレッド セーフな方法で使用できます。http://msdn.microsoft.com/en-us/library/dd287191.aspxを参照してください。
ToDictionary
への中間変換を必要としない、要求に応じた並行辞書用のバリアントは、次のKeyValuePair
場所にあります: Extension method Gets "No overload for method" Error。