Array.IsSynchronized 属性

定义

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

C#
public bool IsSynchronized { get; }
C#
public virtual bool IsSynchronized { get; }

属性值

对于所有数组,此属性始终为 false

实现

示例

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

C#
Array myArray = new int[] { 1, 2, 4 };
lock(myArray.SyncRoot)
{
    foreach (Object item in myArray)
        Console.WriteLine(item);
}

注解

Array 实现 属性, IsSynchronized 因为 接口需要它 System.Collections.ICollection

基于 Array 的 .NET 类使用 SyncRoot 属性提供其自己的集合的同步版本。

使用数组的类还可以使用 SyncRoot 属性实现自己的同步。 同步代码必须对 SyncRoot 集合的 执行操作,而不是直接对集合执行操作。 这样可确保对从其他对象派生的集合正确地执行操作。 具体而言,它与可能同时修改集合的其他线程保持正确的同步。 请注意, 的 SyncRoot 一些实现可能会返回 Array 本身。

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

检索此属性的值的运算复杂度为 O(1)。

适用于

产品 版本
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.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 2.0, 2.1

另请参阅