C# t通道状态更改事件?

C# t通道状态更改事件?,c#,.net,wcf,channelfactory,C#,.net,Wcf,Channelfactory,希望是一个简单的WCF初学者问题 我有一个WCF频道工厂,返回一个服务代理TChannel: // setup connection to server var endpointAddress = new EndpointAddress(GetAppSetting("Endpoint")); var tcpBinding = new NetTcpBinding(); channelFactory = new DuplexChannelFactory<IExcelServer>(thi

希望是一个简单的WCF初学者问题

我有一个WCF频道工厂,返回一个服务代理
TChannel

// setup connection to server
var endpointAddress = new EndpointAddress(GetAppSetting("Endpoint"));
var tcpBinding = new NetTcpBinding();
channelFactory = new DuplexChannelFactory<IExcelServer>(this, tcpBinding, endpointAddress);
server = channelFactory.CreateChannel();
//设置与服务器的连接
var endpointAddress=新的endpointAddress(GetAppSetting(“Endpoint”);
var tcpBinding=new NetTcpBinding();
channelFactory=新的双工channelFactory(this,tcpBinding,endpointAddress);
server=channelFactory.CreateChannel();
我想知道此服务代理何时更改状态(故障、关闭等)。我可以看到
ChannelFactory
本身上的事件,但是我不确定这是否与通道本身相同,即使在这里停止服务器进程也不会导致状态转换

这是一个CallbackContract服务,在几乎所有的交互中,服务器都在向客户机发送数据。因此,当我从客户端进行服务器调用时,我不能简单地依赖于捕获故障


我是否应该从客户端向服务器发送心跳信号以触发状态更改?

CreateChannel
返回的实例实现
TChannel
,但也具有状态更改事件,如
关闭
关闭
打开
,等等:

server = channelFactory.CreateChannel();
((IClientChannel)server).Faulted += FaultedHandler;

附言:正如你所指出的,渠道和渠道工厂的状态是相关的,但并不相同。如果
频道
出现故障,并不一定意味着
频道工厂
工作正常。

谢谢。我仍然从VS得到一个可疑的强制转换警告-我想将IClientChannel添加到类声明中是不实际的。。是否有我应该扩展的抽象类?@MarkNuttall Smith在本例中,您知道的不仅仅是VS。该实例将始终是IClientChannel,但您可以通过检查以下内容使VS平静下来:
var clientChannel=server as IClientChannel;if(clientChannel!=null){clientChannel.Faulted+=FaultedHandler;}