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
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
Zobacz także