我对A类的一个实例如何被定义的存在,直到B类的最后一个实例被敲定后,并不清楚100%。
或者换句话说,我希望所有B的接近调用和处理方法, 一个在B定稿里面,还有那些以A 之前发生自身完成。
场景:
答:我有一个非托管资源托管的包装。 对于一个比喻,让调用文件系统
B.管理是指一种资源,这反过来又要求通过一个包装的非托管资源。 对于analyogy,让我们称之为B中的文件。
额外的请求 - >我想用语法很好地发挥。 即调用使用处置明确不得处置非托管资源。 对象将生活在一个对象池。 它离开对象池时,才应配置。
class SomeClass() : IDisposable{
public SomeClass(){}
public ~SomeClass(){
// dispose of unmanaged here?
}
// Dispose(bool disposing) executes in two distinct scenarios.
// If disposing equals true, the method has been called directly
// or indirectly by a user's code. Managed and unmanaged resources
// can be disposed.
// If disposing equals false, the method has been called by the
// runtime from inside the finalizer and you should not reference
// other objects. Only unmanaged resources can be disposed.
public void Dispose(bool disposing) {
if (disposing) {
// dispose managed
} else {
// dispose unmanaged?
}
}
public void Dispose() {
Dispose(true);
//GC.SuppressFinalize(this);
}
}
参考文献:
[1] 为什么不允许重写Finalize方法
[2]通过C夏普第三版CLR。 CH。 21. CriticalFinalizerObject。 特别是第537的“使用与定稿资源管理”