我应该 运行 在应用程序退出前处理吗?

Should I run Dispose before application exit?

我应该 运行 在应用程序退出前处理吗?

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

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

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

Enviroment.Exit(-1);

我说得对吗?

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

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

在这种具体情况下,您可以选择不Dispose。我确信我想起了雷蒙德·陈 (Raymond Chen) 的一个比喻,即在拆除建筑物之前不清空垃圾箱。1

你的整个过程即将消失。 you 不需要对内部资源进行任何清理,因为 OS 即将回收其所有资源。

但是,您必须权衡一下 a) 出现非标准,b) 可能触发警告,例如stylecop,相对于 稍微 减少退出时间的预期回报 - 您真的需要优化应用程序的这一部分吗?

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


1这就是one在DLL_PROCESS_DETACH中什么都不做。道理类似。