与ChannelFactory <TChannel> .CreateChannel相反的是什么?

Jua*_*uan 0 c# wcf channelfactory

我刚刚按照教程编写了一些代码.我几乎可以肯定我在某个地方读到了频道超时,因此最终会自动关闭.所以我尝试在我的客户端中为我想要调用的每个方法打开一个新的通道,最终(经过大量的调用后)我遇到了错误.

似乎我可以同时打开多少个频道是有限制的.但由于通道是自定义对象的一个​​实例,我不知道如何关闭它或杀死它或者我需要做什么来摆脱它以便我可以创建其他通道.

然后我注意到我应该实现的CreateChannel 文档(我上面链接的教程没有这样做).那么,这是我关闭我的频道的方式吗?如果是这样,我将如何关闭它或我应该如何执行该方法?如果我必须实现接口,我应该怎么做其他方法的实现?TChannelIChannelClose

或者我应该只使用一个频道,只要它持续?无论如何,如果我拥有的是我自己班级的一个实例,我怎么知道是出现故障还是打开或关闭?

正如你所看到的,我对这个主题很失落,所以我希望你能指出我正确的方向.

Pel*_*dao 5

ChannelFactory<TChannel>.CreateChannel创建并返回指定服务类型的通道.返回的对象已经实现IChannel.你(通常?)不需要实现自己的Close方法,也不需要任何其他方法IChannel.

通常,您不会为每个呼叫创建新频道,只需重新使用它即可.(仅在某些特定情况下,为每个呼叫创建新频道可能更好).

您可以通过将其转换为关闭该频道IClientChannel.使用此模式:

try
{
  ((IClientChannel)channel).Close();
}
catch (Exception ex)
{
  ((IClientChannel)channel).Abort();
}
Run Code Online (Sandbox Code Playgroud)

您可以使用((IClientChannel)channel).State来获得信道的状态(即CreatedOpened,Faulted,Closed).