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