Udostępnij przez


Właściwość VariablesCollection.SyncRoot

Pobiera obiekt, który służy do synchronizowania dostępu do kolekcja.

Przestrzeń nazw:  Microsoft.SqlServer.Dts.Tasks.Exec80PackageTask
Zestaw:  Microsoft.SqlServer.Exec80PackageTask (w Microsoft.SqlServer.Exec80PackageTask.dll)

Składnia

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

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

Wartość właściwości

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

Implementacje

ICollection.SyncRoot

Uwagi

Implementuje ICollection.IsSynchronized.Jeśli tworzenie kolekcja niestandardowych i wynikających z DTSReadOnlyCollectionBase, podać własne zsynchronizowanych wersja przy użyciu kolekcja SyncRoot właściwość.Synchronizowanie kodu musi wykonać operacje na SyncRoot kolekcja, nie bezpośrednio w 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 wszystkich elementów w kolekcja jest bardzo wątek-bezpieczne procedury.Nawet wtedy, gdy kolekcja jest synchronizowane, inne wątki nadal można zmodyfikować kolekcja, 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łego 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

Następujący kod ilustruje przykład sposobu blokada ArrayList przy użyciukolekcja 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