Язык

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.

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