【发布时间】:2012-10-31 19:08:38
【问题描述】:
如果我有一个控制台应用程序,其代码如下:
using (DisposableObject object = new DisposableObject())
{
if (a condition)
Environment.Exit(0);
// Do Stuff
}
我的物品会被妥善处理吗?还是在对象被清理之前线程就死掉了?
【问题讨论】:
-
请注意,如果您要关闭应用程序,即使对象未 Disposed,您实际上也不会泄漏内存(因为一旦进程终止,进程受保护的内存空间将完全释放。)如果 Disposal 具有更持久的副作用(例如提交到数据库或超出流程范围的内容),其他事情可能会出错。
-
@DanBryant 未释放的资源不会泄漏托管内存。如果非托管资源是非托管内存(可能是由于与非托管语言的互操作),那么您可能有未释放的内存。
-
我实际上是在
SqlConnection上使用它,但using块嵌套在另外两个(SharePoint 对象)中。我只是想确保Dispose()方法会被调用,因为不处理 SP 对象会在日志中生成错误。 -
嗯...也许是时候重新考虑
Environment.Exit()的做事方法了? -
我总是可以抛出异常。
标签: c# console-application idisposable