Tutti usano molto Liste. Ho bisogno di scorrere questa lista, quindi uso il noto pattern SyncRoot.L'elenco <T> non implementa SyncRoot!
Recentemente ho notato nel post this che SyncRoot deve essere evitato a favore della sicurezza del thread "incorporato" (ogni metodo bloccherà un oggetto privato senza esporlo usando la proprietà SyncRoot). Posso capirlo, e in parte sono d'accordo su questo.
La questione è che List<T> classe non implementa la proprietà SyncRoot, anche se implementa l'interfaccia ICollection, che espongono il SyncRoot proprietà. Dico questo Bause il codice
List<int> list = new List<int>()
list.SyncRoot;
darmi il seguente errore del compilatore:
error CS0117: 'System.Collections.Generic.List' does not contain a definition for 'SyncRoot'
... Se questo è vero, come ho potuto sincronizzare una proprietà pubblica di tipo List <T> quando l'iterazione sopra?
Non ho mai trovato SyncRoot che funzioni correttamente nella realtà, poiché il blocco tende a funzionare meglio a un livello superiore, piuttosto che a bloccare singole raccolte –