Поделиться через


Array.IsSynchronized Свойство

Определение

Возвращает значение, указывающее, синхронизирован ли доступ к Array (потокобезопасный).

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

Значение свойства

Это свойство всегда предназначено false для всех массивов.

Реализации

Примеры

В следующем примере кода показано, как заблокировать массив во время всего перечисления с помощью SyncRoot свойства.

Array myArray = new int[] { 1, 2, 4 };
lock(myArray.SyncRoot)
{
    foreach (Object item in myArray)
        Console.WriteLine(item);
}
let myArray = [| 1; 2; 4|]
lock myArray.SyncRoot (fun () ->
    for item in myArray do
        printfn $"{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

Комментарии

Array IsSynchronized реализует свойство, так как оно требуется интерфейсомSystem.Collections.ICollection.

Классы .NET, основанные на Array предоставлении собственной синхронизированной версии коллекции с помощью SyncRoot свойства.

Классы, использующие массивы, также могут реализовать собственную синхронизацию с помощью SyncRoot свойства. Синхронизированный код должен выполнять операции с SyncRoot коллекцией, а не непосредственно в коллекции. Это обеспечивает правильную работу коллекций, производных от других объектов. В частности, он поддерживает правильную синхронизацию с другими потоками, которые могут одновременно изменять коллекцию. Обратите внимание, что некоторые реализации SyncRoot могут возвращать Array себя.

Перечисление через коллекцию по сути не является потокобезопасной процедурой. Даже если коллекция синхронизирована, другие потоки по-прежнему могут изменять коллекцию, что приводит к возникновению исключения перечислителем. Чтобы гарантировать безопасность потоков во время перечисления, можно заблокировать коллекцию во время всего перечисления или поймать исключения, полученные из изменений, внесенных другими потоками.

Получение значения этого свойства является операцией O(1).

Применяется к

См. также раздел