Dictionary<TKey,TValue>.ICollection.SyncRoot 属性

定义

获取可用于同步对 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

属性值

Object

用于同步对 ICollection 的访问的对象。

实现

注解

System.Collections.Generic 命名空间中集合的默认实现是不同步的。

枚举整个集合本质上不是一个线程安全的过程。 若要确保枚举过程中的线程安全性,可以在整个枚举过程中锁定集合。 若要允许多个线程访问集合以进行读写操作,则必须实现自己的同步。

SyncRoot 属性返回一个对象,该对象可用于同步对 . ICollection. 仅当所有线程在访问集合之前锁定对象时,同步才有效。 以下代码演示了 C#、C++ 和Visual Basic属性的使用SyncRoot

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) 操作。

适用于

另请参阅