List<T>.ICollection.SyncRoot List<T>.ICollection.SyncRoot List<T>.ICollection.SyncRoot Property

Определение

Получает объект, с помощью которого можно синхронизировать доступ к коллекции 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. В используемой по умолчанию реализации List<T> это свойство всегда возвращает текущий экземпляр.In the default implementation of List<T>, this property always returns the current instance.

Реализации

Комментарии

Используемые по умолчанию реализации коллекций в пространстве имен System.Collections.Generic не синхронизированы.Default implementations of collections in the System.Collections.Generic namespace 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#, C++ и Visual Basic.The following code shows the use of the SyncRoot property for C#, 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.

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

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