Array.IsSynchronized Właściwość

Definicja

Pobiera wartość wskazującą, czy dostęp do elementu Array jest synchronizowany (bezpieczny wątek).

public bool IsSynchronized { get; }
public virtual bool IsSynchronized { get; }

Wartość właściwości

Ta właściwość jest zawsze false przeznaczona dla wszystkich tablic.

Implementuje

Przykłady

W poniższym przykładzie kodu pokazano, jak zablokować tablicę podczas całego wyliczenia przy użyciu SyncRoot właściwości .

Array myArray = new int[] { 1, 2, 4 };
lock(myArray.SyncRoot)
{
    foreach (Object item in myArray)
        Console.WriteLine(item);
}

Uwagi

Array implementuje IsSynchronized właściwość, ponieważ jest wymagana System.Collections.ICollection przez interfejs.

Klasy platformy .NET oparte na Array udostępnieniu własnej zsynchronizowanej wersji kolekcji przy użyciu SyncRoot właściwości .

Klasy korzystające z tablic mogą również implementować własną synchronizację SyncRoot przy użyciu właściwości . Synchronizowanie kodu musi wykonywać operacje na SyncRoot kolekcji, a nie bezpośrednio w kolekcji. Gwarantuje to prawidłowe funkcjonowanie kolekcji, które są uzyskiwane z innych obiektów. W szczególności utrzymuje właściwą synchronizację z innymi wątkami, które mogą być jednocześnie modyfikowane w kolekcji. Należy pamiętać, że niektóre implementacje SyncRoot programu mogą zwrócić Array samą siebie.

Wyliczanie przez kolekcję nie jest wewnętrznie bezpieczną procedurą wątku. Nawet gdy kolekcja jest synchronizowana, inne wątki nadal mogą ją modyfikować. Powoduje to zgłaszanie wyjątku przez moduł wyliczający. 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.

Pobieranie wartości tej właściwości jest operacją O(1).

Dotyczy

Produkt Wersje
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Zobacz też