如何处置System.ServiceModel.ClientBase <TChannel>?

我正在使用扩展ClientBase <>的类:

interface IService {}
class MyServiceClient : ClientBase<IService> {}

我遇到的问题是FxCop抱怨MyServiceClient作为成员变量的类也应该实现IDisposable并处置MyServiceClient。

ClientBase具有Dispose()的显式实现,这意味着一个简单的MyServiceClient.Dispose()不能编译。 我必须明确地投到IDisposable。 这是为什么? 这是一个信号,我不应该使用Dispose()? 我应该使用Close()吗?


在关闭和处置 - 要调用? 建议Close和Dispose应该有相同的实现。 这是一个示例包装类(用法),它在Dispose函数中调用Close。 所以调用Close看​​起来很好。


我使用bloc封装了我的Base继承者,并且它可以工作。 喜欢这个:

using (var someClient = new SomeClient(_netTcpBinding,_endpointAddress))
{
    return someClient.SomeMethod();
}

但是当我打开cmd并输入netstat -a -n -p TCP时,我看到了 在这里输入图像描述

我在这里找到的答案是http://sahilmalik.blogspot.ru/2005/11/sockets-and-timewait.html,我重写了我的代码,就像在这种情况下http://marcgravell.blogspot.ru/2008/11/dontdontuse -using.html

链接地址: http://www.djcxy.com/p/54033.html

上一篇: How to dispose of a System.ServiceModel.ClientBase<TChannel>?

下一篇: ASP MVC: When is IController Dispose() called?