OperationContractAttribute.IsTerminating Propriedade

Definição

Obtém ou define um valor que indica se a operação de serviço faz com que o servidor feche a sessão após o envio da mensagem de resposta, se houver.

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 de Propriedade

true se a operação fizer com que o servidor feche a sessão, caso contrário, false. A predefinição é false.

Exemplos

O exemplo seguinte é um serviço que implementa um contrato de serviço que especifica três operações. O serviço requer uma ligação com estado. Se a primeira chamada de um chamador for para qualquer operação que não MethodOneseja , o canal é recusado e é lançada uma exceção. Quando um chamador inicia uma sessão chamando MethodOne, pode terminar a sessão de comunicação a qualquer momento ao chamar MethodThree. MethodTwo pode ser chamada qualquer número de 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;
  }
}

Observações

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

Numa aplicação cliente, um valor definido IsTerminating para true instrui o WCF a fechar o canal após a chegada da resposta.

Num serviço, é definido um temporizador e o canal aborta se o cliente não fechar o canal dentro desse período.

Para mais informações sobre o uso desta propriedade com sessões, consulte Usar Sessões.

Note

Se um chamador estiver a ouvir o OperationContext.OperationCompleted evento de uma OperationContractAttribute.IsTerminating operação, é possível bloquear quando a resposta é recebida. A forma correta de lidar com isto é agendar trabalho noutro thread quando OperationCompleted for levantado e depois regressar imediatamente desse gestor de eventos.

Aplica-se a