C# WCF:如何阻止myServiceHost.Close()处理myServiceHost对象?

C# WCF:如何阻止myServiceHost.Close()处理myServiceHost对象?,c#,wcf,visual-studio-2010,garbage-collection,servicehost,C#,Wcf,Visual Studio 2010,Garbage Collection,Servicehost,显然,关闭和处置实际上是相同的。我希望能够关闭和打开我的ServiceHost实例,而不必每次都重新启动它。有什么想法吗?谢谢。实际上等同于Dispose()。一般来说,对于具有Close()方法的所有类型来说,这是正确的-Dispose()是根据Close()实现的 仅供参考-ServiceHostBase通过以下方式显式实现Dispose() void IDisposable.Dispose() { base.Close(); } 这实际上意味着,当您关闭ServiceHost时,

显然,关闭和处置实际上是相同的。我希望能够关闭和打开我的ServiceHost实例,而不必每次都重新启动它。有什么想法吗?谢谢。

实际上等同于
Dispose()
。一般来说,对于具有
Close()
方法的所有类型来说,这是正确的-
Dispose()
是根据
Close()
实现的

仅供参考-
ServiceHostBase
通过以下方式显式实现
Dispose()

void IDisposable.Dispose()
{
    base.Close();
}

这实际上意味着,当您关闭ServiceHost时,您将始终处理它()。没有支持的方法可以在不重新创建的情况下“重新打开”它。

@Reed Copsey,感谢您的回复。让我重新表述一下这个问题,我可以在不调用Close的情况下“禁用”serviceHost对象吗?@Sam:no。关闭它,当您想再次“启用”它时重新创建它。为什么要“禁用”serviceHost?呼叫方应始终可以使用该服务。@Sam:摆脱这种习惯。你会发现这样想实际上,当你说了所有的话和做了所有的事时,对你的伤害大于帮助。C#中的分配很便宜-与本机代码不同-让对象被收集和重新分配通常比试图阻止它更快,特别是如果它的寿命不长的话…@Sam:这取决于你在做什么。如果有一个简单的“IsEnabled”属性,那么当然不是。然而,你可能会感到惊讶——我发现,做我过去认为需要做的事情(即:将分配从循环中提升)通常会降低C#程序的速度,而不是改进它们……或者换个说法——如何在不调用Close的情况下“禁用”myServiceHost?