La SynchronizedCollection<T>
class se introdujo por primera vez en .NET 2.0 para proporcionar una clase de colección de subprocesos. Lo hace a través del bloqueo para que esencialmente tenga un List<T>
donde cada acceso se envuelve en una declaración lock
.
El System.Collections.Concurrent
namespace es mucho más nuevo. No se introdujo hasta .NET 4.0 e incluye un conjunto de opciones sustancialmente mejorado y más diverso. Estas clases ya no usan bloqueos para proporcionar seguridad de subprocesos, lo que significa que deben escalarse mejor en una situación en la que varios subprocesos acceden a sus datos simultáneamente. Sin embargo, una clase que implementa la interfaz IList<T>
está notablemente ausente entre estas opciones.
lo tanto, si usted está apuntando la versión 4.0 de .NET Framework, se debe utilizar una de las colecciones que proporciona el espacio de nombres System.Collections.Concurrent
siempre que sea posible. Al igual que con la elección entre los diversos tipos de colecciones proporcionadas en el System.Collections.Generic
namespace, tendrá que elegir la que tenga las características y características que mejor se adapten a sus necesidades específicas.
Si se dirige a una versión anterior de .NET Framework o necesita una clase de colección que implemente la interfaz IList<T>
, deberá optar por la clase SynchronizedCollection<T>
.
este artículo en MSDN es también vale la pena leer: When to Use a Thread-Safe Collection
un vistazo aquí: http://stackoverflow.com/questions/1946520/why-are-there-no-concurrent-collections-in-c – StuartLC