【发布时间】:2023-04-01 05:24:01
【问题描述】:
我有一个包含大量静态成员的类,其中一些保留对托管和非托管对象的引用。
例如,一旦引用了 Type,就会调用静态构造函数,这会导致我的类启动任务的阻塞队列。例如,当调用其中一个静态方法时会发生这种情况。
我实现了 IDisposable,它为我提供了处理我创建的任何实例对象的处置方法。但是,如果使用者没有从我的类中创建任何实例对象,则永远不会调用这些方法。
如何以及在何处放置代码来处理由我的类的静态部分维护的引用?我一直认为静态引用资源的处理是在最后一个实例对象被释放的时候发生的;这是我第一次创建一个不能创建实例的类。
【问题讨论】:
-
静态项可用于应用程序的整个执行。您不使用 NEW 关键字创建静态项目,因此这意味着您没有任何东西的多个实例,因为您实际上没有实例化任何东西。关于托管对象,不要担心它们,GC 会处理它们。关于非托管资源尝试在非静态类中使用它们,否则它们将一直保留到您关闭应用程序为止。静态项目不支持 dispose。
标签: c# .net dispose idisposable