加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:43:10 所属栏目:百科 来源:网络整理
导读:我的.net服务通过在Main()循环退出之前的finally块中调用resourceName.Dispose()来清除所有非托管资源. 我真的要这样做吗? 我认为我不能泄漏任何资源,因为进程正在结束吗? Windows将关闭任何不再使用的手柄,对吧? 解决方法 可以由实现IDisposable的对象封
我的.net服务通过在Main()循环退出之前的finally块中调用resourceName.Dispose()来清除所有非托管资源.

我真的要这样做吗?

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

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读