SqlParameterCollection.IsSynchronized Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene un valore che indica se l'oggetto SqlParameterCollection è sincronizzato.
public:
virtual property bool IsSynchronized { bool get(); };
public override bool IsSynchronized { get; }
member this.IsSynchronized : bool
Public Overrides ReadOnly Property IsSynchronized As Boolean
Valore della proprietà
true se l'oggetto SqlParameterCollection è sincronizzato; in caso contrario, false.
Commenti
Questo membro è un'implementazione esplicita del membro dell'interfaccia. Può essere usato solo quando viene eseguito il cast dell'istanza a un'interfaccia SqlParameterCollectionICollection .
SyncRoot restituisce un oggetto , che può essere utilizzato per sincronizzare l'accesso ICollectiona . La maggior parte delle classi di raccolta nello System.Collections spazio dei nomi implementa anche un metodo Synchronized, che fornisce un wrapper sincronizzato intorno alla raccolta sottostante.
L'enumerazione tramite una raccolta non è intrinsecamente una procedura thread-safe. Anche quando una raccolta viene sincronizzata, altri thread possono comunque modificare la raccolta, causando la generazione di un'eccezione da parte dell'enumeratore. Per garantire la thread safety durante l'enumerazione, è possibile bloccare la raccolta durante l'intera enumerazione o intercettare le eccezioni risultanti dalle modifiche apportate da altri thread.
Nell'esempio di codice seguente viene illustrato come bloccare la raccolta usando la SyncRoot proprietà durante l'intera enumerazione.
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