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


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 и затем немедленно вернуться из этого обработчика событий.

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