Język

PropertyCollection.ICollection.IsSynchronized Właściwość

Definicja

Pobiera wartość wskazującą, czy dostęp do elementu ICollection jest synchronizowany (bezpieczny wątek).

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

Wartość właściwości

true jeśli dostęp do elementu ICollection jest synchronizowany (bezpieczny wątek); w przeciwnym razie false.

Implementuje

Uwagi

SyncRoot Zwraca obiekt , który może służyć do synchronizowania dostępu do obiektu ICollection.

Większość klas kolekcji w System.Collections przestrzeni nazw implementuje również metodę Syncd, która zapewnia zsynchronizowaną otokę wokół bazowej kolekcji.

Wyliczanie za pośrednictwem kolekcji nie jest wewnętrznie bezpieczną procedurą wątku. Nawet w przypadku synchronizacji kolekcji inne wątki nadal mogą modyfikować kolekcję, co powoduje zgłoszenie wyjątku przez moduł wyliczający. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, możesz zablokować kolekcję podczas całego wyliczenia lub przechwycić wyjątki wynikające ze zmian wprowadzonych przez inne wątki.

W poniższym przykładzie pokazano, jak zablokować kolekcję przy użyciu SyncRoot wyliczenia podczas całego wyliczenia:

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

Dotyczy

Zobacz też