Queue.SyncRoot 属性
获取可用于同步 Queue 访问的对象。
**命名空间:**System.Collections
**程序集:**mscorlib(在 mscorlib.dll 中)
语法
声明
Public Overridable ReadOnly Property SyncRoot As Object
用法
Dim instance As Queue
Dim value As Object
value = instance.SyncRoot
public virtual Object SyncRoot { get; }
public:
virtual property Object^ SyncRoot {
Object^ get ();
}
/** @property */
public Object get_SyncRoot ()
public function get SyncRoot () : Object
属性值
可用于同步对 Queue 的访问的对象。
备注
若要创建 Queue 的同步版本,请使用 Synchronized 方法。但是,派生类可以使用 SyncRoot 属性来提供它们自己的 Queue 同步版本。同步代码必须在 Queue 的 SyncRoot 上执行操作,而不是直接在 Queue 上执行操作。这确保了从其他对象派生的集合的正确操作。特别是,它维护了与其他线程的正确同步,这些线程可能同时正在修改 Queue 对象。
通过集合枚举在本质上不是一个线程安全的过程。即使一个集合已进行同步,其他线程仍可以修改该集合,这将导致枚举数引发异常。若要在枚举过程中保证线程安全,可以在整个枚举过程中锁定集合,或者捕捉由于其他线程进行的更改而引发的异常。
示例
下面的代码示例演示如何在整个枚举过程中使用 SyncRoot 锁定集合。检索此属性的值的运算复杂度为 O(1)。
Queue myCollection = new Queue();
lock(myCollection.SyncRoot) {
foreach (Object item in myCollection) {
// Insert your code here.
}
}
Dim myCollection As New Queue()
Dim item As Object
SyncLock myCollection.SyncRoot
For Each item In myCollection
' Insert your code here.
Next item
End SyncLock
平台
Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition
.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。
版本信息
.NET Framework
受以下版本支持:2.0、1.1、1.0
.NET Compact Framework
受以下版本支持:2.0、1.0
请参见
参考
Queue 类
Queue 成员
System.Collections 命名空间
Queue.IsSynchronized 属性
Synchronized