【问题标题】:How to dispose WCF services correctly?如何正确处置 WCF 服务?
【发布时间】:2010-01-19 11:33:26
【问题描述】:

我的 WCF 服务是 IDisposable,因为它使用 ReadWriterLockSlim。当我用以下方法处理它们时:

public void Dispose()
{
    lockSlim.Dispose();
}

一些公共方法仍在运行(或接受新连接,我不知道),并且由于尝试使用已处置对象(在本例中为 lockSlim)而引发异常。如果在停止 Windows 服务托管的 WCF 服务时,在停止所有正在运行的方法并关闭它以获取新连接后调用 Dispose 方法会更好。但似乎必须手动完成。有什么捷径或例子吗?

【问题讨论】:

  • 您能解释一下您在 WCF 服务中使用 ReadWriterLockSlim 吗
  • @Mitch 我使用[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)],所以我需要创建手动锁

标签: wcf windows-services dispose idisposable


【解决方案1】:

我认为没有必要处置 LockSlim 对象。在服务停止时,调用 ServiceHost.Close() 。所有的线程都会中断它的工作,所有的链接都会被破坏,垃圾收集器会照顾内存。 ReadWriterLockSlim 不是关键资源。如果有帮助请告诉我

【讨论】:

  • 很高兴这个问题有答案,但很遗憾答案没有涵盖字面问题。这些问题出现在 Google 和 StackOverflow 搜索中,很少有人的情况与提出问题的人完全相同;这意味着虽然提问者的问题得到了解决,但它留下了一个无用的未回答问题,以嘲弄下一位有正当理由想要问题答案的读者......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
  • 2016-11-28
  • 2019-11-26
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
  • 1970-01-01
相关资源
最近更新 更多