OperationContractAttribute.IsTerminating プロパティ

定義

応答メッセージが存在する場合に、そのメッセージの送信後にセッションを終了するようにサービス操作がサーバーに指示するかどうかを示す値を取得または設定します。Gets or sets a value that indicates whether the service operation causes the server to close the session after the reply message, if any, is sent.

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。それ以外の場合は falsetrue if the operation causes the server to close the session, otherwise, false. 既定値は、false です。The default is false.

次の例は、3 つの操作を指定するサービス コントラクトを実装するサービスです。The following example is a service that implements a service contract that specifies three operations. このサービスは、ステートフル接続を必要とします。The service requires a stateful connection. 呼び出し元の最初の呼び出しが MethodOne 以外の操作である場合、チャネルは拒否され、例外がスローされます。If a caller's first call is to any operation other than MethodOne, the channel is refused and an exception is thrown. 呼び出し元が MethodOne を呼び出してセッションを開始した場合、呼び出し元は MethodThree を呼び出すことでいつでも通信セッションを終了できます。When a caller initiates a session by calling MethodOne, that caller can terminate the communication session at any time by calling MethodThree. MethodTwo は、セッション中に何回でも呼び出すことができます。MethodTwo can be called any number of times during a session.

[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 プロパティを使用して、サービス操作の呼び出しで通信セッションを終了することを示します。Use the IsTerminating property to indicate that calling a service operation terminates the communication session.

クライアントアプリケーションでは、値 IsTerminatingtrue に設定され、応答が到着した後にチャネルを閉じるよう WCF に指示します。In a client application, a value of IsTerminating set to true instructs WCF to close the channel after the reply arrives.

サービスでは、タイマーが設定され、その期間内にクライアントがチャネルを閉じない場合はチャネルを中止します。In a service, a timer is set and the channel aborts if the client does not close the channel within that period.

セッションでこのプロパティを使用する方法の詳細については、「セッションの使用」を参照してください。For more information about using this property with sessions, see Using Sessions.

注意

呼び出し元が OperationContext.OperationCompleted 操作の OperationContractAttribute.IsTerminating イベントをリッスンしている場合、応答の受信時にブロックすることができます。If a caller is listening for the OperationContext.OperationCompleted event for an OperationContractAttribute.IsTerminating operation, it is possible to block when the response is received. これを処理する適切な方法として、OperationCompleted が発生し、その直後に該当のイベント ハンドラーから制御が返されたときに、別のスレッドで処理するようにスケジュールを設定します。The proper way to handle this is to schedule work on another thread when OperationCompleted is raised and then immediately return from that event handler.

適用対象