2012-04-11 171 views
3

有谁知道一种方法来创建一个代理侦听器,以便当CommunicationState发生变化时,我可以调用一个动作或方法?CommunicationState监听器?

例如,我想更新我的WCF服务以进行代码更改。由于应用程序在其早期开发中,代码更改非常频繁。但是,不要用电子邮件来烦扰我的员工,而是告诉他们,他们需要重新启动他们的应用程序。我宁愿避免他们必须重新启动应用程序,并发送给他们一封电子邮件。我宁愿编写一个监听器来查看服务的通信状态,如果它已更改为故障声明,则尝试重新连接。

编辑

也许这里的一些更多的上下文。

InstanceContext context = new InstanceContext(this); 
Subscriber = new SubscriptionService.MySubscriptionServiceClient(context); 
Subscriber.Subscribe(""); 

所以基本上我想知道何时订阅服务已停止,以便我可以尝试每60秒左右重新连接。我试图在Subscriber服务中寻找一个事件,但我什么也没看到。我需要在服务端实现一些东西吗?

感谢

+1

请不要用“C#WCF”和这样的前缀您的标题。这就是标签的用途。 – 2012-04-11 19:21:46

+0

好的...有什么特别的原因吗?如果您指定而不是仅仅发表声明,那将会很好。 – meanbunny 2012-04-11 19:24:33

+0

因为“这就是标签的用途”。 – 2012-04-11 19:26:40

回答

1

您可以使用您生成的客户端类的InnerChannel属性中的故障事件。客户类的State属性只是InnerChannel.State的包装,所以这应该按照您的要求工作。

(仅供参考,你也可以,如果你在代码中创建的沟通渠道,而不是使用生成的代理使用上ChannelFactory<TChannel>名称类似的事件。)

+0

谢谢。我能够成功锁定Faulted事件并重新订阅客户端到服务。这工作完美无瑕! – meanbunny 2012-04-11 20:27:20

+0

不客气:) – Alan 2012-04-11 20:29:13