gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:39:44 24 4
gpt4 key购买 nike

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

我真的必须这样做吗?

我认为我不能因为进程正在结束而泄漏任何资源的想法是否正确? Windows 将关闭所有不再使用的句柄,对吗?

最佳答案

实现IDisposable 的对象可以封装的资源类型没有限制。 IDisposable 对象封装的绝大部分资源会在进程关闭时被操作系统清理,但有些程序可能会使用操作系统不知道的资源。例如,需要底层数据库不支持的锁定模式的数据库应用程序可能会使用一个或多个表来跟踪哪些内容被“ checkout ”以及由谁“ checkout ”。使用此类表“ check out ”资源的类可以在其 Dispose 方法中确保所有内容都被检回,但是如果程序在类没有机会清理表的情况下关闭,则由该表保护的资源将悬而未决。由于操作系统不知道这些表的含义,因此无法清理它们。

关于c# - 为什么在 main() 退出之前调用 Dispose()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13077601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com