【发布时间】:2011-08-30 19:27:56
【问题描述】:
我有许多具有实现 IDisposable 的私有成员变量的类(计时器、画笔等)。我是否需要做任何事情来确保 .NET Framework 正确清理这些变量?
我遇到的文献是指“托管资源”与“非托管资源”。这些术语让我感到困惑,因为您可以拥有一个使用非托管资源实现功能的托管类。这被认为是“非托管资源”还是“托管资源”?
我的理解是,如果您不对实现 IDisposable 的对象调用 Dispose(),那么在应用程序退出之前不会释放资源。长时间运行程序时,这种情况可能会导致 OutOfMemory 异常。
如何确保我的代码正确处理资源管理?这对这些对象很重要,因为它们是自定义控件,并且可能存在大量消耗 IDisposable 资源的绘图。我尽可能使用 C# using 语句,但有时我需要使实现 IDisposable 的对象成为成员变量,而 using 语句在这方面无济于事。
【问题讨论】:
-
仅供参考 - 如果您想了解更多信息,我在这里写了关于这个场景的信息:reedcopsey.com/2009/04/19/…