我应该在申请退出前运行Dispose吗?

时间:2017-05-24 12:28:29

标签: c# dispose

Shoud我在申请退出前运行Dispose?

例如,我创建了许多对象,其中一些有事件订阅:

 var myObject=new MyClass();
 myObject.OnEvent+=OnEventHandle;

并且,例如,在我的工作中,我应该使用具有IDisposable接口的类。 然后,我决定关闭应用程序并执行此操作:

Enviroment.Exit(-1);

我是对的吗?

我应该向所有对象调用Dispose,它是否实现了IDisposable接口? 内存泄漏会发生吗?

P.S。这是服务器端应用程序,使用WCF,MQ。

1 个答案:

答案 0 :(得分:4)

在此特定案例中,您可以选择不Dispose。我确信我回忆起雷蒙德·陈的一个类比,就是在拆除房屋之前没有清空垃圾箱。 1

你的整个过程即将消失。由于操作系统即将回收所有资源,因此无需对内部资源进行任何清理。

然而,你必须权衡它a)出现非标准的,b)潜在的触发警告来自例如:使用稍微退出时间的预期奖励 - 你是否真的需要优化应用程序的这一部分?

正如其他人所评论的那样,我通常会选择将我的一次性物品包裹在using中,即使在这种情况下可能完全没必要。

1 这是关于在DLL_PROCESS_DETACH中没有做任何事情的one。推理类似。