DTSReadOnlyCollectionBase.SyncRoot Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает объект, с помощью которого можно синхронизировать доступ к коллекции DTSReadOnlyCollectionBase.
public:
property System::Object ^ SyncRoot { System::Object ^ get(); };
public object SyncRoot { get; }
member this.SyncRoot : obj
Public ReadOnly Property SyncRoot As Object
Значение свойства
Объект, который может быть использован для синхронизации доступа к коллекции DTSReadOnlyCollectionBase.
Реализации
Примеры
В следующем примере кода показано, как заблокировать коллекцию ArrayList
с помощью SyncRoot перечисления.
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
Комментарии
Реализует ICollection.IsSynchronized. При создании пользовательской коллекции и наследуемой от DTSReadOnlyCollectionBaseнее можно указать собственную синхронизированную версию коллекции с помощью SyncRoot свойства. Синхронный код должен выполнять операции с SyncRoot коллекцией, а не непосредственно в коллекции. Это обеспечивает правильную работу коллекций, являющихся производными других объектов. В частности, он поддерживает правильную синхронизацию с другими потоками, которые могут одновременно изменять объект.
Перечисление коллекции не является потокобезопасной процедурой. Даже если коллекция синхронизирована, другие потоки по-прежнему могут изменять коллекцию, что приводит к возникновению исключения перечислителем. Для обеспечения потокобезопасности при перечислении можно либо заблокировать коллекцию на все время перечисления, либо перехватывать исключения, возникающие в результате изменений, внесенных другими потоками. Дополнительные сведения см. в разделе ICollection.IsSynchronized.