このクラスは、スレッド セーフなコレクション クラスを提供するために、.NET 2.0 で最初に導入されました。これはロックを介して行われるため、基本的にすべてのアクセスがステートメントでラップされます。SynchronizedCollection<T>
List<T>
lock
名前System.Collections.Concurrent
空間ははるかに新しいものです。これは .NET 4.0 まで導入されておらず、大幅に改善され、より多様な選択肢が含まれています。これらのクラスは、スレッド セーフを提供するためにロックを使用しなくなりました。つまり、複数のスレッドがデータに同時にアクセスしている状況で、より適切にスケーリングする必要があります。ただし、IList<T>
インターフェイスを実装するクラスは、これらのオプションの中で特に欠けています。
そのため、.NET Framework のバージョン 4.0 をターゲットにしている場合は、System.Collections.Concurrent
可能な限り、名前空間によって提供されるコレクションの 1 つを使用する必要があります。System.Collections.Generic
名前空間で提供されるさまざまなタイプのコレクションから選択する場合と同様に、特定のニーズに最適な機能と特性を持つものを選択する必要があります。
古いバージョンの .NET Framework をターゲットにしている場合、またはIList<T>
インターフェイスを実装するコレクション クラスが必要な場合は、そのSynchronizedCollection<T>
クラスを選択する必要があります。
MSDN のこの記事も読む価値があります:スレッドセーフ コレクションを使用する場合