ForEachItem.SyncRoot Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.