我正在使用WCF在服务器应用和客户端应用之间创建连接。
因为我正在使用NetTcpBinding
,所以我希望保持通过以下方式创建的频道:
T proxy = ChannelFactory<T>.CreateChannel();
我将代理实例带入我的应用程序以与服务器通信。在某个时刻,我用另一个工厂续订这个代理。但是我希望通过处理它来从第一家工厂释放资源。但我不想管理工厂并继续参考。
是否有一种方法可以让代理实例检索通道关联来处理它?
喜欢......
var commObj = (ICommunicationObject)proxy;
commObj.Factory.Dispose();
由于
答案 0 :(得分:1)
不幸的是,这是不可能的,因为渠道和工厂没有联系。但我认为你的方法不正确。您应该保留对工厂的引用并根据需要创建Channel。在某些情况下,重复使用频道可能是个问题。通道可能出现故障,但内部工厂仍然有效。创建工厂有实际成本,而一些.net 3.5 SP1工厂内部存储在静态缓存中。