gpt4 book ai didi

c# - Dispose 应该做什么 - 只清理资源或执行一些 "business logic"?

转载 作者:行者123 更新时间:2023-11-30 16:13:23 25 4
gpt4 key购买 nike

<分区>

考虑到 IDisposable 的语义,除了清理资源之外,Dispose 应该做什么?

我看到许多类使用 Dispose 方法来启动关闭进程和其他一些东西,而不仅仅是执行“资源清理”工作。例如,如果类中有一个线程需要关闭,您是否希望调用 Dispose 正常关闭该线程

恕我直言,我会在此对象上实现一个 Stop/Shutdown 方法,并优雅地关闭那里的线程,而在 Dispose 中,我会检查线程何时仍然存在,以便简单地对其调用 Abort(暗杀风格 :))。

同样的例子也可以用在计时器上,所有其他资源在你完成对那个对象的使用之前可以有某种终止过程。

.NET 中冲突设计的两个示例:

  • Windows 服务的 ServiceBase 有 OnStop 和 Dispose覆盖。
  • WebApp.Start from OWIN for self-hosting 给你一个IDisposable,我猜它会在某个地方关闭服务处理过程。

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