次の方法で共有


CallbackBehaviorAttribute.ConcurrencyMode プロパティ

定義

サービスが、1 つのスレッド、複数のスレッド、または再入呼び出しをサポートするかどうかを示す値を取得または設定します。

public:
 property System::ServiceModel::ConcurrencyMode ConcurrencyMode { System::ServiceModel::ConcurrencyMode get(); void set(System::ServiceModel::ConcurrencyMode value); };
public System.ServiceModel.ConcurrencyMode ConcurrencyMode { get; set; }
member this.ConcurrencyMode : System.ServiceModel.ConcurrencyMode with get, set
Public Property ConcurrencyMode As ConcurrencyMode

プロパティ値

ConcurrencyMode 値の 1 つ。既定値は Single です。

例外

値が、ConcurrencyMode 値ではありません。

注釈

このプロパティは、コールバック オブジェクトのインスタンスが 1 つのスレッドまたは同時に実行する複数のスレッドをサポートするかどうか、およびシングル スレッドの場合は再入をサポートするかどうかを示します。

ConcurrencyModeSingle に設定すると、サービスのインスタンスを 1 つずつのスレッド実行に制限するようシステムに指示します。それにより、スレッドの問題に対応することから解放されます。 これが既定値です。 Multiple の値は、サービス オブジェクトを複数のスレッドで一度に実行できることを示します。 この場合は、開発者がスレッド セーフと状態の整合性を保証する必要があります。

Reentrant では、一度に 1 つのスレッドへのアクセスも制限されます。 ただし、この設定は、実行中のサービス メソッドから呼び出され、実行中のサービスに戻って再入する呼び出しを可能にします。 再入可能呼び出しは異なるマネージド スレッドで実行できますが、その場合は、再入可能呼び出しの有効期間の間、元のスレッドがブロックされます。

通常、コンカレンシー モードに違反するインスタンスにメッセージが届いた場合は、そのインスタンスが使用可能になるまで、またはタイムアウトになるまで、メッセージは待機します。

さらに、ConcurrencyModeSingle に設定され、再入可能呼び出しが、インスタンスが解放されるまで待機する間ブロックされた場合、システムはデッドロックを検出し、例外をスローします。

コンカレンシーの詳細については、「セッション」、「インスタンス化」、「コンカレンシー」を参照してくださいServiceBehaviorAttribute.ConcurrencyMode

適用対象