Todos usan mucho de List. Necesito iterar sobre esta lista, entonces utilizo el patrón conocido SyncRoot.¡La lista <T> no implementa SyncRoot!
Recientemente noté en la publicación this que se debe evitar el SyncRoot a favor de la seguridad de hilos "incrustados" (cada método se bloqueará en un objeto privado sin exponerlo usando la propiedad SyncRoot). Puedo entenderlo, y parcialmente estoy de acuerdo con eso.
La cuestión es que List<T> clase no implementa la propiedad SyncRoot, incluso si implementa la interfaz ICollection, que exponga la propiedadSyncRoot. Digo esto Bause el código
List<int> list = new List<int>()
list.SyncRoot;
dame el siguiente error de compilación:
error CS0117: 'System.Collections.Generic.List' does not contain a definition for 'SyncRoot'
... Si esto es cierto, ¿cómo podría sincronizar una propiedad pública de la lista Tipo de <T> cuando se repite ¿encima de eso?
Nunca he encontrado que SyncRoot funcione bien en la vida real, ya que el bloqueo tiende a funcionar mejor en un nivel superior, en lugar de simplemente bloquear colecciones únicas –