Array.IsSynchronized Array.IsSynchronized Array.IsSynchronized Array.IsSynchronized Property

Definizione

Ottiene un valore che indica se l'accesso a Array è sincronizzato (thread-safe).Gets a value indicating whether access to the Array is synchronized (thread safe).

public:
 virtual property bool IsSynchronized { bool get(); };
public virtual bool IsSynchronized { get; }
member this.IsSynchronized : bool
Public Overridable ReadOnly Property IsSynchronized As Boolean

Valore della proprietà

Questa proprietà è sempre false per tutte le matrici.This property is always false for all arrays.

Implementazioni

Esempi

Nell'esempio di codice seguente viene illustrato come bloccare una matrice durante l'intera enumerazione utilizzando la SyncRoot proprietà.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

Commenti

Arrayimplementa la IsSynchronized proprietà perché è richiesta System.Collections.ICollection dall'interfaccia.Array implements the IsSynchronized property because it is required by the System.Collections.ICollection interface.

.NET Framework classi basate su Array forniscono una propria versione sincronizzata della raccolta usando la SyncRoot proprietà..NET Framework classes based on Array provide their own synchronized version of the collection using the SyncRoot property.

Le classi che utilizzano matrici possono inoltre implementare una propria sincronizzazione utilizzando la SyncRoot proprietà.Classes that use arrays can also implement their own synchronization using the SyncRoot property. Il codice di sincronizzazione deve eseguire operazioni sull'oggetto SyncRoot della raccolta, non direttamente sulla raccolta.The synchronizing code must perform operations on the SyncRoot of the collection, not directly on the collection. In questo modo si garantisce il corretto funzionamento delle raccolte derivate da altri oggetti.This ensures proper operation of collections that are derived from other objects. In particolare, mantiene la sincronizzazione corretta con altri thread che potrebbero modificare contemporaneamente la raccolta.Specifically, it maintains proper synchronization with other threads that might be simultaneously modifying the collection. Si noti che alcune implementazioni SyncRoot di potrebbero restituire Array l'oggetto stesso.Note that some implementations of SyncRoot might return the Array itself.

L'enumerazione di una raccolta non è intrinsecamente una procedura thread-safe.Enumerating through a collection is intrinsically not a thread safe procedure. Anche se una raccolta è sincronizzata, è possibile che venga modificata da altri thread, con conseguente generazione di un'eccezione da parte dell'enumeratore.Even when a collection is synchronized, other threads can still modify the collection, which causes the enumerator to throw an exception. Per garantire la protezione dei thread durante l'enumerazione, è possibile bloccare la raccolta per l'intera enumerazione oppure intercettare le eccezioni determinate dalle modifiche apportate da altri thread.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.

Il recupero del valore di questa proprietà è un'operazione O(1).Retrieving the value of this property is an O(1) operation.

Si applica a

Vedi anche