ReadOnlyCollection<T>.ICollection.SyncRoot Свойство

Определение

Получает объект, с помощью которого можно синхронизировать доступ к коллекции 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; }
 ReadOnly Property SyncRoot As Object Implements ICollection.SyncRoot

Значение свойства

Объект, который может использоваться для синхронизации доступа к 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.

Реализации

Комментарии

Реализации по умолчанию коллекций в 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.

Применяется к

Дополнительно