OperationContractAttribute.IsTerminating 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置一个值,该值指示服务操作在发送答复消息(如果存在)后,是否会导致服务器关闭会话。
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 属性指示调用服务操作可终止通信会话。
在客户端应用程序中, IsTerminating 值设置为 指示 true
WCF 在回复到达后关闭通道。
在服务中,如果客户端在该期间内不关闭信道,则将会设置计时器并中止信道。
有关将此属性用于会话的详细信息,请参阅 使用会话。
注意
如果调用方侦听的是 OperationContext.OperationCompleted 操作的 OperationContractAttribute.IsTerminating 事件,则在收到响应时可能会阻塞。 处理这种情况的正确方法是,当引发 OperationCompleted 时在其他线程上调度工作,然后从该事件处理程序立即返回。