Partage via


OperationContractAttribute.IsTerminating Propriété

Définition

Obtient ou définit une valeur qui indique si l'opération de service conduit le serveur à fermer la session après l'envoi du message de réponse (le cas échéant).

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

Valeur de propriété

true si l'opération conduit le serveur à fermer la session ; sinon, false. La valeur par défaut est false.

Exemples

L'exemple suivant est un service qui implémente un contrat de service qui spécifie trois opérations. Le service requiert une connexion avec état. Si le premier appel d'un appelant est destiné à une opération autre que MethodOne, le canal est refusé et une exception est levée. Lorsqu'un appelant démarre une session en appelant MethodOne, cet appelant peut arrêter la session de communication à tout moment en appelant MethodThree. MethodTwo peut être appelé n’importe quel nombre de fois au cours d’une 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;  
  }  
}  

Remarques

Utilisez la propriété IsTerminating pour indiquer que l'appel d'une opération de service termine la session de communication.

Dans une application cliente, une valeur définie IsTerminating sur indique à true WCF de fermer le canal une fois la réponse arrivée.

Dans un service, un minuteur est défini et le canal abandonne si le client ne ferme pas le canal avant la fin du délai.

Pour plus d’informations sur l’utilisation de cette propriété avec des sessions, consultez Utilisation de sessions.

Notes

Si un appelant écoute l'événement OperationContext.OperationCompleted pour une opération OperationContractAttribute.IsTerminating, il est possible de bloquer lors de la réception de la réponse. Pour gérer correctement cela, il convient de planifier des travaux sur un autre thread lorsque OperationCompleted est déclenché, puis de retourner immédiatement à partir de ce gestionnaire d'événements.

S’applique à