Collection<T>.ICollection.SyncRoot 屬性

定義

取得可用以同步存取 ICollection 的物件。

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

屬性值

可用來同步存取 ICollection 的物件。 在 Collection<T> 的預設實作中,這個屬性一律會傳回目前的執行個體。

實作

備註

中的 System.Collections.Generic 集合預設實作不會同步處理。

透過集合進行列舉在本質上並非安全執行緒程序。 若要確保列舉期間的執行緒安全性,您可以在整個列舉期間鎖定集合。 若要讓多重執行緒能夠存取集合以便進行讀取和寫入,您必須實作自己的同步處理。

SyncRoot 傳回 物件,這個物件可用來同步存取 ICollection。 只有在存取集合之前,所有線程都會鎖定此物件時,同步處理才會生效。 下列程式代碼顯示 C#、C++ 和 Visual Basic 的 屬性用法 SyncRoot

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.5, 1.6, 2.0, 2.1
UWP 10.0

另請參閱