Partilhar via


OperationContractAttribute.IsTerminating Propriedade

Definição

Obtém ou define um valor que indica se a operação de serviço faz o servidor fechar a sessão depois que a mensagem de resposta, se houver, for enviada.

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

Valor da propriedade

true se a operação faz com que o servidor feche a sessão, caso contrário, false. O padrão é false.

Exemplos

O exemplo a seguir é um serviço que implementa um contrato de serviço que especifica três operações. O serviço requer uma conexão com estado. Se a primeira chamada de um chamador for para qualquer operação diferente MethodOnede , o canal será recusado e uma exceção será gerada. Quando um chamador inicia uma sessão chamando MethodOne, esse chamador pode encerrar a sessão de comunicação a qualquer momento chamando MethodThree. MethodTwo pode ser chamado várias vezes durante uma sessão.

[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;  
  }  
}  

Comentários

Use a IsTerminating propriedade para indicar que chamar uma operação de serviço encerra a sessão de comunicação.

Em um aplicativo cliente, um valor de IsTerminating definido como true instrui o WCF a fechar o canal após a chegada da resposta.

Em um serviço, um temporizador é definido e o canal é anulado se o cliente não fecha o canal dentro desse período.

Para obter mais informações sobre como usar essa propriedade com sessões, consulte Usando sessões.

Observação

Se um chamador estiver escutando o OperationContext.OperationCompleted evento para uma OperationContractAttribute.IsTerminating operação, será possível bloquear quando a resposta for recebida. A maneira adequada de lidar com isso é agendar o trabalho em outro thread quando OperationCompleted é gerado e, em seguida, retornar imediatamente desse manipulador de eventos.

Aplica-se a