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

Definicja

Pobiera wartość wskazującą, Array czy dostęp do elementu jest synchronizowany (bezpieczny wątkowo).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

Wartość właściwości

Ta właściwość jest zawsze false dla wszystkich tablic.This property is always false for all arrays.

Implementuje

Przykłady

Poniższy przykład kodu pokazuje, SyncRoot jak zablokować tablicę podczas całego wyliczenia przy użyciu właściwości.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

Uwagi

Arrayimplementuje właściwość IsSynchronized , ponieważ jest wymagana System.Collections.ICollection przez interfejs.Array implements the IsSynchronized property because it is required by the System.Collections.ICollection interface.

Klasy .NET Framework w oparciu Array o dostarczenie własnej synchronizowanej wersji kolekcji SyncRoot przy użyciu właściwości..NET Framework classes based on Array provide their own synchronized version of the collection using the SyncRoot property.

Klasy korzystające z tablic mogą również implementować własne synchronizacje SyncRoot przy użyciu właściwości.Classes that use arrays can also implement their own synchronization using the SyncRoot property. Kod synchronizacji musi wykonywać operacje na SyncRoot kolekcji, nie bezpośrednio w kolekcji.The synchronizing code must perform operations on the SyncRoot of the collection, not directly on the collection. Gwarantuje to prawidłowe funkcjonowanie kolekcji, które są uzyskiwane z innych obiektów.This ensures proper operation of collections that are derived from other objects. W celu zapewnienia odpowiedniej synchronizacji z innymi wątkami, które mogą jednocześnie modyfikować kolekcję.Specifically, it maintains proper synchronization with other threads that might be simultaneously modifying the collection. Należy zauważyć, że niektóre SyncRoot implementacje mogą Array zwrócić sam siebie.Note that some implementations of SyncRoot might return the Array itself.

Wyliczanie za pomocą kolekcji nie jest wewnętrznie procedurą bezpiecznego wątku.Enumerating through a collection is intrinsically not a thread safe procedure. Nawet gdy kolekcja jest synchronizowana, inne wątki nadal mogą ją modyfikować. Powoduje to zgłaszanie wyjątku przez moduł wyliczający.Even when a collection is synchronized, other threads can still modify the collection, which causes the enumerator to throw an exception. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, można zablokować kolekcję podczas całego procesu wyliczania albo rejestrować wyjątki wynikłe ze zmian wprowadzanych przez inne wątków.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.

Pobieranie wartości tej właściwości jest operacją O(1).Retrieving the value of this property is an O(1) operation.

Dotyczy

Zobacz też