Поделиться через


OperationContractAttribute.IsTerminating Свойство

Определение

Возвращает или задает значение, указывающее, приводит ли операция службы к закрытию сеанса сервером после отправки ответного сообщения, если оно есть.

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, если операция приводит к закрытию сеанса сервером; в противном случае — значение false. Значение по умолчанию — false.

Примеры

В следующем примере представлена служба, которая реализует контракт службы, определяющий три операции. Службе требуется соединение с отслеживанием состояния. Если первый вызов вызывающего объекта предназначен для любой операции, кроме MethodOne, канал отклоняется и создается исключение. Если вызывающий объект инициирует сеанс, вызывая операцию MethodOne, он может завершить этот сеанс связи в любое время, вызвав операцию MethodThree. MethodTwo может вызываться любое количество раз во время сеанса.

[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, чтобы указать, что вызов операции службы завершает сеанс связи.

В клиентском приложении значение , заданное IsTerminatingtrue для , указывает WCF закрыть канал после поступления ответа.

В службе устанавливается таймер и, если в течение определенного этим таймером времени клиент не закрывает канал, канал прерывается.

Дополнительные сведения об использовании этого свойства с сеансами см. в разделе Использование сеансов.

Примечание

Если вызывающий объект прослушивает событие OperationContext.OperationCompleted для операции OperationContractAttribute.IsTerminating, при получении ответа возможна блокировка. Для надлежащей обработки такой ситуации необходимо запланировать работу в другом потоке при появлении события OperationCompleted и затем немедленно вернуться из этого обработчика событий.

Применяется к