Sdílet prostřednictvím


SchemaNameCollection.ICollection.IsSynchronized Vlastnost

Definice

Získá hodnotu označující, zda je přístup k ICollection je synchronizován (bez vláken).

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

Hodnota vlastnosti

true pokud je přístup k ICollection souboru synchronizovaný (bezpečný z více vláken), v opačném případě false.

Implementuje

Poznámky

SyncRoot vrátí objekt, který lze použít k synchronizaci přístupu k objektu ICollection.

Většina tříd kolekce v System.Collections oboru názvů také implementuje synchronizovanou metodu, která poskytuje synchronizovanou obálku kolem podkladové kolekce.

Výčet prostřednictvím kolekce nemůže být procedurou bezpečnou pro přístup z více vláken. I v případě, že jde o synchronizovanou kolekci, mohou úpravy provádět i ostatní vlákna, což způsobuje vyvolání výjimky enumerátorem. K zaručení bezpečnosti přístupu z více vláken můžete buďto zamknout kolekci na celou dobu práce s výčtem, nebo zachycovat výjimky vzniklé v důsledku změn prováděných ostatními vlákny.

Následující příklad ukazuje, jak uzamknout kolekci SyncRoot pomocí příkazu během celého výčtu:

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  

Platí pro

Viz také