Dictionary<TKey,TValue>.ICollection.SyncRoot Dictionary<TKey,TValue>.ICollection.SyncRoot Dictionary<TKey,TValue>.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.

Реализации

Комментарии

Используемые по умолчанию реализации коллекций в пространстве имен 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.

Свойство возвращает объект, который можно использовать для синхронизации доступа ICollectionк. SyncRootThe SyncRoot property returns an object that can be used to synchronize access to the ICollection. Синхронизация вступает в силу только в том случае, если все потоки блокируют объект перед доступом к коллекции.Synchronization is effective only if all threads lock the 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).Getting the value of this property is an O(1) operation.

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

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