Shoud我在申请退出前运行Dispose?
例如,我创建了许多对象,其中一些有事件订阅:
var myObject=new MyClass();
myObject.OnEvent+=OnEventHandle;
并且,例如,在我的工作中,我应该使用具有IDisposable
接口的类。
然后,我决定关闭应用程序并执行此操作:
Enviroment.Exit(-1);
我是对的吗?
我应该向所有对象调用Dispose
,它是否实现了IDisposable接口?
内存泄漏会发生吗?
P.S。这是服务器端应用程序,使用WCF,MQ。
答案 0 :(得分:4)
在此特定案例中,您可以选择不Dispose
。我确信我回忆起雷蒙德·陈的一个类比,就是在拆除房屋之前没有清空垃圾箱。 1
你的整个过程即将消失。由于操作系统即将回收所有资源,因此你无需对内部资源进行任何清理。
然而,你必须权衡它a)出现非标准的,b)潜在的触发警告来自例如:使用稍微退出时间的预期奖励 - 你是否真的需要优化应用程序的这一部分?
正如其他人所评论的那样,我通常会选择将我的一次性物品包裹在using
中,即使在这种情况下可能完全没必要。
1 这是关于在DLL_PROCESS_DETACH中没有做任何事情的one。推理类似。