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

Definição

Obtém um objeto que pode ser usado para sincronizar o acesso ao Array.Gets an object that can be used to synchronize access to the Array.

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

Valor da propriedade

Um objeto que pode ser usado para sincronizar o acesso ao Array.An object that can be used to synchronize access to the Array.

Implementações

Exemplos

O exemplo de código a seguir mostra como bloquear uma matriz durante toda a enumeração por meio de SyncRoot propriedade.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

Comentários

Essa propriedade implementa o System.Collections.ICollection interface.This property implements the System.Collections.ICollection interface.

Classes do .NET framework com base em Array fornecer sua própria versão sincronizada da coleção usando o SyncRoot propriedade..NET Framework classes based on Array provide their own synchronized version of the collection using the SyncRoot property.

Classes que usam matrizes também podem implementar sua própria sincronização usando o SyncRoot propriedade.Classes that use arrays can also implement their own synchronization using the SyncRoot property. O código de sincronização necessário realizar operações no SyncRoot da coleção, não diretamente na coleção.The synchronizing code must perform operations on the SyncRoot of the collection, not directly on the collection. Isso garante a operação apropriada das coleções que são derivadas de outros objetos.This ensures proper operation of collections that are derived from other objects. Especificamente, ele mantém uma sincronização adequada com outros threads que podem ser simultaneamente modificação da coleção.Specifically, it maintains proper synchronization with other threads that might be simultaneously modifying the collection. Observe que algumas implementações de SyncRoot pode retornar o Array em si.Note that some implementations of SyncRoot might return the Array itself.

Enumeração por meio de uma coleção intrinsecamente não é um procedimento de thread-safe.Enumerating through a collection is intrinsically not a thread safe procedure. Mesmo quando uma coleção está sincronizada, outros threads ainda podem modificar a coleção, o que faz o enumerador lançar uma exceção.Even when a collection is synchronized, other threads can still modify the collection, which causes the enumerator to throw an exception. Para garantir thread-safe durante a enumeração, é possível bloquear a coleção durante toda a enumeração ou verificar as exceções resultantes das alterações feitas por outros threads.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.

A recuperação do valor dessa propriedade é uma operação O(1).Retrieving the value of this property is an O(1) operation.

Aplica-se a

Veja também