我在这里看到了这个thread,但没有得到我的任何答案。
据我了解:
总是会回收本地资源!
当GC
发生时(第二轮之后)
呼叫处置
使用Using
程序崩溃
正常终止程序
那为什么我需要从CriticalFinalizerObject
继承呢?
我看不到任何资源都不会被回收的情况。
我想念什么?
最佳答案
CriticalFinalizerObject
类确实为“处置/完成”过程增加了一些可靠性。就像防止Thread.Abort()
等。
那为什么我需要从CriticalFinalizerObject继承呢?
使用Safehandle : CriticalFinalizerObject
的主要原因是它使您不必处理非托管资源模式。 SafeHandle将非托管资源转换为托管资源,请参见Joe Duffy。
我认为,作为应用程序程序员,您不必从CriticalFinalizerObject派生一个类,但是当您必须处理“句柄”时,应使用SafeHandle
。