ReadOnlyCollection<T>.ICollection.SyncRoot Property

Definition

Возвращает объект, который может быть использован для синхронизации доступа к коллекции ICollection.Gets an object that can be used to synchronize access to the ICollection.

property System::Object ^ System::Collections::ICollection::SyncRoot { System::Object ^ get(); };
object System.Collections.ICollection.SyncRoot { get; }
member this.System.Collections.ICollection.SyncRoot : obj
 ReadOnly Property SyncRoot As Object Implements ICollection.SyncRoot

Property Value

Object

Объект, который может быть использован для синхронизации доступа к коллекции ICollection.An object that can be used to synchronize access to the ICollection. В используемой по умолчанию реализации ReadOnlyCollection<T> это свойство всегда возвращает текущий экземпляр.In the default implementation of ReadOnlyCollection<T>, this property always returns the current instance.

Implements

Remarks

Реализации по умолчанию коллекций в System.Collections.Generic не синхронизированы.Default implementations of collections in System.Collections.Generic are not synchronized.

Перечисление коллекции не является потокобезопасной процедурой.Enumerating through a collection is intrinsically not a thread-safe procedure. Чтобы гарантировать потокобезопасность, можно заблокировать коллекцию на время всего перечисления.To guarantee thread safety during enumeration, you can lock the collection during the entire enumeration. Чтобы разрешить доступ к коллекции из нескольких потоков для чтения и записи, необходимо реализовать собственную синхронизацию.To allow the collection to be accessed by multiple threads for reading and writing, you must implement your own synchronization.

SyncRoot возвращает объект, который можно использовать для синхронизации доступа к ICollection.SyncRoot returns an object that can be used to synchronize access to the ICollection. Синхронизация вступает в силу только в том случае, если все потоки блокируют этот объект перед доступом к коллекции.Synchronization is effective only if all threads lock this object before accessing the collection. В следующем коде показано использование свойства SyncRoot для C#, Visual C++и Visual Basic.The following code shows the use of the SyncRoot property for C#, Visual C++, and Visual Basic.

ICollection ic = ...;  
lock (ic.SyncRoot) {  
   // Access the collection.  
}  
Dim ic As ICollection = ...  
SyncLock ic.SyncRoot  
   ' Access the collection.  
End SyncLock  
ICollection^ ic = ...;  
try {  
   Monitor::Enter(ic->SyncRoot);  
   // Access the collection.  
}  
finally {  
   Monitor::Exit(ic->SyncRoot);  
}  

Получение значения данного свойства является операцией порядка сложности O(1).Retrieving the value of this property is an O(1) operation.

Это член является явной реализацией члена интерфейса.This member is an explicit interface member implementation. Он может использоваться, только если экземпляр ReadOnlyCollection<T> приведен к типу интерфейса IDisposable.It can be used only when the ReadOnlyCollection<T> instance is cast to an IDisposable interface.

Applies to

See also