微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 为什么在main()退出之前调用Dispose()?

我的.net服务通过在Main()循环退出之前的finally块中调用resourceName.dispose()来清除所有非托管资源.

我真的要这样做吗?

我认为我不能泄漏任何资源,因为进程正在结束吗? Windows关闭任何不再使用的手柄,对吧?

解决方法

可以由实现Idisposable的对象封装的资源类型没有限制.当进程关闭时,Idisposable对象封装的绝大多数资源将被操作系统清理,但某些程序可能会使用操作系统无关的资源.例如,需要基础数据库不支持的锁定模式的数据库应用程序可能会使用一个或多个表来跟踪哪些内容被“签出”以及由谁执行.使用这种表格“检出”资源的类可以确保其dispose方法能够检查所有内容,但是如果程序关闭而没有类有机会清理表,则该表保护的资源将是悬挂着由于操作系统不知道这些表是什么意思,它将无法清理它们.

原文地址:https://www.jb51.cc/csharp/96726.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐