Udostępnij za pośrednictwem


Właściwość ForEachItems.SyncRoot

Pobiera obiekt, który można zsynchronizować dostęp do ForEachItems kolekcja.

Przestrzeń nazw:  Microsoft.SqlServer.Dts.Runtime.Enumerators.Item
Zestaw:  Microsoft.SqlServer.ManagedDTS (w Microsoft.SqlServer.ManagedDTS.dll)

Składnia

'Deklaracja
Public ReadOnly Property SyncRoot As Object
    Get
'Użycie
Dim instance As ForEachItems
Dim value As Object

value = instance.SyncRoot
public Object SyncRoot { get; }
public:
virtual property Object^ SyncRoot {
    Object^ get () sealed;
}
abstract SyncRoot : Object
override SyncRoot : Object
final function get SyncRoot () : Object

Wartość właściwości

Typ: System.Object
Obiekt używany do synchronizowania dostępu do ForEachItems kolekcja.

Implementacje

ICollection.SyncRoot

Uwagi

Implementuje ICollection.IsSynchronized.Tworzenie kolekcja niestandardowych, wynikających z DTSReadOnlyCollectionBase, można zapewnić własnej wersja zsynchronizowane przy użyciu kolekcja SyncRoot właściwość.Synchronizowanie kodu musi wykonać operacje na SyncRoot kolekcja nie bezpośrednio kolekcja.Zapewnia prawidłowe działanie kolekcje, które pochodzą od innych obiektów.W szczególności utrzymuje właściwego synchronizacja z innymi wątkami, które mogą być jednocześnie modyfikowania obiektu.

Wyliczanie kolekcja za bardzo nie jest procedurę bezpiecznego wątek.Nawet kiedy kolekcja jest synchronizowane, inne wątki nadal można zmodyfikować kolekcji, która powoduje, że moduł wyliczający w celu wygenerowania wyjątku.W celu zagwarantowania bezpieczeństwa wątek podczas wyliczania, można albo blokada kolekcja podczas wyliczania całej lub połowów wyjątki wynikające ze zmian wprowadzonych przez innych wątków.Aby uzyskać więcej informacji, zobacz temat ICollection.IsSynchronized.

Przykłady

Poniższy przykład kodu pokazuje blokada ArrayList przy użyciu kolekcja SyncRoot podczas wyliczania.

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