次の方法で共有


OperationContractAttribute.IsTerminating プロパティ

定義

応答メッセージが存在する場合に、そのメッセージの送信後にセッションを終了するようにサービス操作がサーバーに指示するかどうかを示す値を取得または設定します。

public:
 property bool IsTerminating { bool get(); void set(bool value); };
public bool IsTerminating { get; set; }
member this.IsTerminating : bool with get, set
Public Property IsTerminating As Boolean

プロパティ値

操作によってサーバーがセッションを終了する場合は true。それ以外の場合は false。 既定値は、false です。

次の例は、3 つの操作を指定するサービス コントラクトを実装するサービスです。 このサービスは、ステートフル接続を必要とします。 呼び出し元の最初の呼び出しが MethodOne 以外の操作である場合、チャネルは拒否され、例外がスローされます。 呼び出し元が MethodOne を呼び出してセッションを開始した場合、呼び出し元は MethodThree を呼び出すことでいつでも通信セッションを終了できます。 MethodTwo は、セッション中に何度でも呼び出すことができます。

[ServiceContractAttribute(SessionMode=SessionMode.Required)]  
public class InitializeAndTerminateService  
{  
  [OperationContract(  
    IsOneWay=true,  
    IsInitiating=true,  
    IsTerminating=false  
  )]  
  public void MethodOne()  
  {  
    return;  
  }  

  [OperationContract(  
    IsInitiating=false,  
    IsTerminating=false  
  )]  
  public int MethodTwo(int x, out int y)  
  {  
    y = 34;  
    return 0;  
  }  

  [OperationContract(  
    IsOneWay=true,  
    IsInitiating=false  
    IsTerminating=true  
  )]  
  public void MethodThree()  
  {  
    return;  
  }  
}  

注釈

IsTerminating プロパティを使用して、サービス操作の呼び出しで通信セッションを終了することを示します。

クライアント アプリケーションでは、 の IsTerminating 値が に true 設定され、応答が到着した後にチャネルを閉じるよう WCF に指示します。

サービスでは、タイマーが設定され、その期間内にクライアントがチャネルを閉じない場合はチャネルを中止します。

セッションでこのプロパティを使用する方法の詳細については、「セッションの 使用」を参照してください。

注意

呼び出し元が OperationContext.OperationCompleted 操作の OperationContractAttribute.IsTerminating イベントをリッスンしている場合、応答の受信時にブロックすることができます。 これを処理する適切な方法として、OperationCompleted が発生し、その直後に該当のイベント ハンドラーから制御が返されたときに、別のスレッドで処理するようにスケジュールを設定します。

適用対象