我对清理 ServiceHost 的最佳方法有点困惑。由于来自 Visual Studio 代码分析器的 CA1001 警告建议我为我的类实现 IDisposable 接口,我意识到了我的代码中的问题。
我已经阅读了关于 IDisposable 的讨论并且熟悉典型的用例,但是在这种情况下发现自己很困惑。确保正在处置 ServiceHost 并可能满足 CA1001 的正确方法是什么。谢谢。
我的代码如下所示:
public class MyClass
{
private ServiceHost host = null;
public void StartListening(...)
{
// make sure we are not already listening for connections
if (host != null && host.State != CommunicationState.Closed)
StopListening();
// create service host instance
host = new ServiceHostWithData(typeof(ServiceHandler), address);
// do a bunch of configuration stuff on the host
host.Open();
}
public void StopListening()
{
// if we are not closed
if ((host != null) && (host.State != CommunicationState.Closed))
{
host.Close();
host = null;
}
else // we are null or closed
{
host = null; // if it isn't null, and it is already closed, then we set it to null
}
}
}