SqlParameterCollection.IsSynchronized Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera wartość wskazującą, czy SqlParameterCollection element jest zsynchronizowany.
public:
virtual property bool IsSynchronized { bool get(); };
public override bool IsSynchronized { get; }
member this.IsSynchronized : bool
Public Overrides ReadOnly Property IsSynchronized As Boolean
Wartość właściwości
true
jeśli element SqlParameterCollection jest zsynchronizowany; w przeciwnym razie . false
Uwagi
Ten element jest jawną implementacją członków. Można go używać tylko wtedy, gdy SqlParameterCollection wystąpienie jest rzutowe do interfejsu ICollection .
SyncRoot Metoda zwraca obiekt , który może służyć do synchronizowania dostępu do obiektu ICollection. Większość klas kolekcji w System.Collections przestrzeni nazw implementuje również metodę Synchronized, która zapewnia zsynchronizowaną otokę wokół bazowej kolekcji.
Wyliczanie w kolekcji nie jest wewnętrznie procedurą odporną na wielowątkowość. Nawet gdy kolekcja jest synchronizowana, inne wątki nadal mogą ją modyfikować. Powoduje to zgłaszanie wyjątku przez moduł wyliczający. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, można zablokować kolekcję podczas całego procesu wyliczania albo rejestrować wyjątki wynikłe ze zmian wprowadzanych przez inne wątków.
Poniższy przykład kodu pokazuje, jak zablokować kolekcję przy użyciu SyncRoot właściwości podczas całego wyliczenia.
ICollection^ myCollection = someCollection;
bool lockTaken = false;
try
{
Monitor::Enter(myCollection->SyncRoot, lockTaken);
for each (Object^ item in myCollection);
{
// Insert your code here.
}
}
finally
{
if (lockTaken)
{
Monitor::Exit(myCollection->SyncRoot);
}
}
ICollection myCollection = someCollection;
lock(myCollection.SyncRoot)
{
foreach (object item in myCollection)
{
// Insert your code here.
}
}
Dim myCollection As ICollection = someCollection
SyncLock myCollection.SyncRoot
For Each item In myCollection
' Insert your code here.
Next item
End SyncLock