次の方法で共有


SqlParameterCollection.IsSynchronized プロパティ

定義

SqlParameterCollection が同期されているかどうかを示す値を取得します。

public:
 virtual property bool IsSynchronized { bool get(); };
public override bool IsSynchronized { get; }
member this.IsSynchronized : bool
Public Overrides ReadOnly Property IsSynchronized As Boolean

プロパティ値

SqlParameterCollection が同期される場合は true、同期されない場合は false です。

注釈

このメンバーは、明示的なインターフェイス メンバーの実装です。 これは、SqlParameterCollection のインスタンスが ICollection インターフェイスにキャストされる場合のみ、使用できます。

SyncRoot は、ICollection へのアクセスを同期するために使用できるオブジェクトを返します。 名前空間の System.Collections ほとんどのコレクション クラスでは、基になるコレクションの同期ラッパーを提供する Synchronized メソッドも実装されます。

コレクションの列挙処理は、本質的にスレッドセーフな処理ではありません。 コレクションが同期されていても、他のスレッドがコレクションを変更する場合があり、このときは列挙子から例外がスローされます。 列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチします。

次のコード例は、 プロパティを使用して列挙体全体をロック SyncRoot する方法を示しています。

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

適用対象

こちらもご覧ください