OperationContractAttribute.IsTerminating Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.