Partilhar via


PropertyCollection.ICollection.IsSynchronized Propriedade

Definição

Obtém um valor que indica se o acesso à ICollection é sincronizado (thread-safe).

property bool System::Collections::ICollection::IsSynchronized { bool get(); };
bool System.Collections.ICollection.IsSynchronized { get; }
member this.System.Collections.ICollection.IsSynchronized : bool
 ReadOnly Property IsSynchronized As Boolean Implements ICollection.IsSynchronized

Valor da propriedade

true caso o acesso ao ICollection seja sincronizado (thread-safe); do contrário, false.

Implementações

Comentários

SyncRoot retorna um objeto , que pode ser usado para sincronizar o ICollectionacesso ao .

A maioria das classes de coleção no System.Collections namespace também implementa um método Sincronizado, que fornece um wrapper sincronizado em torno da coleção subjacente.

Enumerar por meio de uma coleção não é intrinsecamente um procedimento thread-safe. Mesmo quando uma coleção está sincronizada, outros threads ainda podem modificar a coleção, o que faz o enumerador lançar uma exceção. Para garantir a segurança do thread durante a enumeração, você pode bloquear a coleção durante toda a enumeração ou capturar as exceções resultantes de alterações feitas por outros threads.

O exemplo a seguir mostra como bloquear a coleção usando o SyncRoot durante toda a enumeração:

ICollection myCollection = new ICollection();  
  lock(myCollection.SyncRoot) {  
  foreach (Object item in myCollection) {  
  // Insert your code here.  
  }  
 }  
Dim myCollection As New ICollection()  
 Dim item As Object  
 SyncLock myCollection.SyncRoot  
  For Each item In myCollection  
  ' Insert your code here.  
  Next item  
 End SyncLock  

Aplica-se a

Confira também