0

我正在使用 WCF 在服务器应用程序和客户端应用程序之间创建连接。

因为我正在使用NetTcpBinding,所以我想保持由以下人员创建的频道:

T proxy = ChannelFactory<T>.CreateChannel();

我将代理实例带入我的应用程序以与服务器通信。在某个时刻,我用不同的工厂更新了这个代理。但我想通过处置它从第一个工厂释放资源。但我不想管理工厂并保留参考。

代理实例有没有办法检索通道关联来处理它?

喜欢 ...

var commObj = (ICommunicationObject)proxy;
commObj.Factory.Dispose();

谢谢

4

1 回答 1

1

不幸的是,这是不可能的,因为渠道和工厂没有关联。但我认为你的方法是不正确的。您应该保留对工厂的引用并根据需要创建 Channel。在某些情况下,重用 Channel 可能是个问题。通道可能出现故障,但内部工厂仍然有效。创建工厂是有实际成本的,一些 .net 3.5 SP1 工厂内部存储在静态缓存中。

于 2012-09-12T18:47:34.127 回答