ICollection.IsSynchronized 属性

定义

获取一个值,该值指示是否同步对 ICollection 的访问(线程安全)。

C#
public bool IsSynchronized { get; }

属性值

如果对 true 的访问是同步的(线程安全),则为 ICollection;否则为 false

注解

SyncRoot 返回一个对象,该对象可用于同步对 ICollection 的访问。

命名空间中的 System.Collections 大多数集合类也实现 Synchronized 方法,该方法在基础集合周围提供同步包装。

枚举整个集合本质上不是一个线程安全的过程。 即使某个集合已同步,其他线程仍可以修改该集合,这会导致枚举数引发异常。 若要确保枚举过程中的线程安全性,可以在整个枚举期间锁定集合,或者捕获由其他线程进行的更改所导致的异常。

下面的代码示例演示如何在整个枚举期间使用 SyncRoot 属性锁定集合。

C#
ICollection myCollection = someCollection;
lock(myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

另请参阅