我有一个 WCF 实现,并将其托管在 Windows 服务(自托管)中。我使用回调合约来触发客户端的一些事件。
问题是我如何确定或检查客户端是否仍然活着以触发其回调事件。有没有检查机制?我使用.NET 3.5。
谢谢。
问问题
3981 次
2 回答
0
于 2012-04-09T09:25:18.253 回答
0
我解决同样问题的方法是创建一个“DefaultCallback”类,它实现回调接口并且什么都不做(它当然不会抛出任何 Not ImplmentedException)。然后你可以写一些这样的代码:
private IServiceCallBack[] GetCallBack()
{
var returnValue = new IServiceCallBack[1];
var com = (ICommunicationObject)(returnValue[0] = OperationContext.Current.GetCallbackChannel<IServiceCallBack>());
com.Closing += new EventHandler((object sender, EventArgs e) =>
{
returnValue[0] = new DefaultCallBack();
});
com.Faulted += new EventHandler((object sender, EventArgs e) =>
{
returnValue[0] = new DefaultCallBack();
});
return returnValue;
}
因此,每当回调客户端处于关闭或故障状态时,它都会被一个不执行任何操作的兼容对象替换。
于 2012-12-27T14:55:29.127 回答