DTSReadOnlyCollectionBase.SyncRoot 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取可用于同步对 . DTSReadOnlyCollectionBase的访问的对象。
public:
property System::Object ^ SyncRoot { System::Object ^ get(); };
public object SyncRoot { get; }
member this.SyncRoot : obj
Public ReadOnly Property SyncRoot As Object
属性值
可用于同步对 . DTSReadOnlyCollectionBase. 的访问的对象。
实现
示例
以下代码示例展示了如何在 ArrayList 枚举过程中使用锁定 SyncRoot 集合。
using System;
using System.Collections;
ArrayList myCollection = new ArrayList();
lock( myCollection.SyncRoot )
foreach ( Object item in myCollection )
{
// Insert your code here.
}
Imports System
Imports System.Collections
Dim myCollection As ArrayList = New ArrayList()
lock(myCollection.SyncRoot)
For Each item In myCollection
' Insert your code here.
Next
注解
实现 ICollection.IsSynchronized。 如果你创建自定义集合并从 DTSReadOnlyCollectionBase衍生,你可以利用该 SyncRoot 属性提供你自己的同步版本。 同步代码必须对 SyncRoot 集合执行操作,而不是直接对集合执行操作。 这可确保从其他对象派生的集合的正确操作。 具体来说,它能与可能同时修改对象的其他线程保持适当的同步。
通过集合进行枚举本质上不是线程安全的过程。 即使集合同步,其他线程仍可以修改集合,这会导致枚举器引发异常。 若要保证枚举期间的线程安全性,可以在整个枚举期间锁定集合,也可以捕获由其他线程所做的更改导致的异常。 更多信息请参见 ICollection.IsSynchronized。