我应该 运行 在应用程序退出前处理吗?
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中什么都不做。道理类似。
我应该 运行 在应用程序退出前处理吗?
例如,我创建了很多对象,其中一些有事件订阅:
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中什么都不做。道理类似。