我是否应该打扰处理共享进程生命周期的对象?

Rot*_*tem 8 c# dispose idisposable

我知道所有实现的对象IDisposable应该在不再需要时立即处理,以释放其非托管资源使用的内存.

我的问题涉及我知道的事实,直到主机进程本身终止为止.如果我处理它们会不会有任何区别?当进程死亡时,是否存在未释放内存的可能性?GDI对象怎么样?即使没有处理过程,GDI句柄是否会在进程死亡时被释放?

我完全明白,无论如何处理所有物体都是一种好习惯.我纯粹是出于好奇而问.

Hen*_*man 7

它取决于所讨论的对象(资源).

当进程终止所有非托管内存时,即使关联的终结器无法运行,也会释放文件句柄和其他OS资源.

但我不太确定数据库句柄,命名互斥体等.

所以,如果你可以认为这是安全的,调用Dispose,你必须了解的资源类型,以及它如何涉及一种方法.更容易从一般原则中调用Dispose().

但这是一个理论论证,大多数课程都会使用SafeHandle : CriticalFinalizerObject.所以我认为这不是一个真正的实际问题.