Compartilhar via


ForEachItem.SyncRoot Propriedade

Definição

Obtém um objeto que pode ser usado para sincronizar o acesso à coleção.

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 à coleção.

Implementações

Exemplos

O exemplo de código a seguir mostra como bloquear uma ArrayList coleção usando a SyncRoot enumeração durante a enumeração.

using System;  
using System.Collections;  

ArrayList myCollection = new ArrayList();  
lock( myCollection.SyncRoot )   
foreach ( Object item in myCollection )   
{  
    // Insert your code here.  
}  
Imports System  
Imports System.Collections  

Dim myCollection As ArrayList =  New ArrayList()   

lock(myCollection.SyncRoot)  
For Each item In myCollection  
    ' Insert your code here.  
Next  

Comentários

Implementa ICollection.IsSynchronized. Se você estiver criando uma coleção personalizada e derivando, DTSReadOnlyCollectionBasepoderá fornecer sua própria versão sincronizada da coleção usando a SyncRoot propriedade. O código de sincronização deve executar operações na SyncRoot coleção, não diretamente na coleção. Isso garante a operação apropriada das coleções que são derivadas de outros objetos. Especificamente, ele mantém a sincronização adequada com outros threads que podem estar modificando simultaneamente o objeto.

A enumeração por meio de uma coleção não é um procedimento thread-safe intrínseco. Mesmo quando uma coleção é sincronizada, outros threads ainda podem modificar a coleção, o que faz com que o enumerador lance uma exceção. 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. Para obter mais informações, consulte ICollection.IsSynchronized.

Aplica-se a