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

定义

获取可用于同步对 ICollection 的访问的对象。

C#
object System.Collections.ICollection.SyncRoot { get; }

属性值

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

实现

注解

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

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

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

C#
ICollection ic = ...;
lock (ic.SyncRoot) {
   // Access the collection.
}

获取此属性的值是 O (1) 操作。

适用于

产品 版本
.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 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.6, 2.0, 2.1
UWP 10.0

另请参阅