다음을 통해 공유


List<T>.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에 대한 액세스를 동기화하는 데 사용할 수 있는 개체입니다. List<T>의 기본 구현에서 이 속성은 언제나 현재 인스턴스를 반환합니다.

구현

설명

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) 연산입니다.

적용 대상

추가 정보