Array.SyncRoot Array.SyncRoot Array.SyncRoot Array.SyncRoot Property

정의

Array에 대한 액세스를 동기화하는 데 사용할 수 있는 개체를 가져옵니다.Gets an object that can be used to synchronize access to the Array.

public:
 virtual property System::Object ^ SyncRoot { System::Object ^ get(); };
public virtual object SyncRoot { get; }
member this.SyncRoot : obj
Public Overridable ReadOnly Property SyncRoot As Object

속성 값

Array에 대한 액세스를 동기화하는 데 사용할 수 있는 개체입니다.An object that can be used to synchronize access to the Array.

구현

예제

다음 코드 예제를 사용 하 여 배열을 열거 하는 동안 차단 하는 방법을 보여 줍니다는 SyncRoot 속성입니다.The following code example shows how to lock an array during the entire enumeration by using the SyncRoot property.

Array^ myArray = gcnew array<Int32> { 1, 2, 4 };
try
{
    Monitor::Enter(myArray->SyncRoot); 
        
    for each (Int32 item in myArray)
        Console::WriteLine(item);
}
finally
{
    Monitor::Exit(myArray->SyncRoot);
}
Array myArray = new int[] { 1, 2, 4 };
lock(myArray.SyncRoot) 
{
    foreach (Object item in myArray)
        Console.WriteLine(item);
}
Dim myArray As Array = New Integer() { 1, 2, 4 }
SyncLock(myArray.SyncRoot) 
    For Each item As Object In myArray
        Console.WriteLine(item)
    Next
End SyncLock

설명

이 속성을 구현 합니다 System.Collections.ICollection 인터페이스입니다.This property implements the System.Collections.ICollection interface.

.NET framework 클래스에 따라 Array 사용 하 여 컬렉션의 동기화 된 버전을 제공 합니다 SyncRoot 속성입니다..NET Framework classes based on Array provide their own synchronized version of the collection using the SyncRoot property.

배열을 사용 하는 클래스에 직접 동기화를 사용 하 여 구현할 수도 있습니다는 SyncRoot 속성입니다.Classes that use arrays can also implement their own synchronization using the SyncRoot property. 동기화 하는 코드에서 작업을 수행 해야 합니다 SyncRoot 직접적 컬렉션에서 컬렉션의 합니다.The synchronizing code must perform operations on the SyncRoot of the collection, not directly on the collection. 이렇게 하면 다른 개체에서 파생되는 컬렉션에 대해 적절한 작업이 수행됩니다.This ensures proper operation of collections that are derived from other objects. 특히 컬렉션을 동시에 수정할 수 있는 다른 스레드와 적절 한 동기화를 유지 합니다.Specifically, it maintains proper synchronization with other threads that might be simultaneously modifying the collection. 일부 구현의 SyncRoot 반환할 수 있습니다는 Array 자체입니다.Note that some implementations of SyncRoot might return the Array itself.

컬렉션을 열거 되지 본질적으로 스레드로부터 안전한 프로시저가 있습니다.Enumerating through a collection is intrinsically not a thread safe procedure. 컬렉션이 동기화되어 있을 때 다른 스레드에서 해당 컬렉션을 수정할 수 있으므로 이렇게 되면 열거자에서 예외가 throw됩니다.Even when a collection is synchronized, other threads can still modify the collection, which causes the enumerator to throw an exception. 열거하는 동안 스레드로부터 안전을 보장하려면 전체 열거를 수행하는 동안 컬렉션을 잠그거나 다른 스레드에서 변경된 내용으로 인해 발생한 예외를 catch하면 됩니다.To guarantee thread safety during enumeration, you can either lock the collection during the entire enumeration or catch the exceptions resulting from changes made by other threads.

이 속성 값을 검색하는 것은 O(1) 연산입니다.Retrieving the value of this property is an O(1) operation.

적용 대상

추가 정보