다음을 통해 공유


Dictionary<TKey,TValue>.KeyCollection.ICollection.SyncRoot 속성

정의

ICollection에 대한 액세스를 동기화하는 데 사용할 수 있는 개체를 가져옵니다.

property System::Object ^ System::Collections::ICollection::SyncRoot { System::Object ^ get(); };
object System.Collections.ICollection.SyncRoot { get; }
member this.System.Collections.ICollection.SyncRoot : obj
 ReadOnly Property SyncRoot As Object Implements ICollection.SyncRoot

속성 값

ICollection에 대한 액세스를 동기화하는 데 사용할 수 있는 개체입니다. Dictionary<TKey,TValue>.KeyCollection의 기본 구현에서 이 속성은 언제나 현재 인스턴스를 반환합니다.

구현

설명

의 컬렉션의 기본 구현은 System.Collections.Generic 동기화되지 않습니다.

컬렉션 전체를 열거하는 프로시저는 기본적으로 스레드로부터 안전하지 않습니다. 열거 동안 스레드 보안을 보장하려면 전체 열거 동안 컬렉션을 잠그면 됩니다. 여러 스레드에서 컬렉션에 액세스하여 읽고 쓸 수 있도록 허용하려면 사용자 지정 동기화를 구현해야 합니다.

SyncRoot 는 에 대한 액세스를 동기화하는 데 사용할 수 있는 개체를 반환합니다 ICollection. 동기화는 모든 스레드가 컬렉션에 액세스하기 전에 이 개체를 잠그는 경우에만 유효합니다. 다음 코드에서는 C#, C++및 Visual Basic에 대한 속성을 사용하는 SyncRoot 방법을 보여 있습니다.

ICollection ic = ...;  
lock (ic.SyncRoot) {  
   // Access the collection.  
}  
Dim ic As ICollection = ...  
SyncLock ic.SyncRoot  
   ' Access the collection.  
End SyncLock  
ICollection^ ic = ...;  
try {  
   Monitor::Enter(ic->SyncRoot);  
   // Access the collection.  
}  
finally {  
   Monitor::Exit(ic->SyncRoot);  
}  

이 속성 값을 검색하는 것은 O(1) 연산입니다.

적용 대상

추가 정보