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

前端之家收集整理的这篇文章主要介绍了c# – 为什么在main()退出之前调用Dispose()?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的.net服务通过在Main()循环退出之前的finally块中调用resourceName.Dispose()来清除所有非托管资源.

我真的要这样做吗?

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

解决方法

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

猜你在找的C#相关文章