我刚读这篇文章,
杰弗里里希特的“ Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework”,我想不出任何使用ReRegisterForFinalize或SuppressFinalize的真人生活样本.
杰弗里里希特的“ Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework”,我想不出任何使用ReRegisterForFinalize或SuppressFinalize的真人生活样本.
有人能提供一些例子吗?
解决方法
它在.NET框架中使用的一些地方,总是一个好看的地方.基本模式是:
>被处置的对象被重用. Dispose()方法调用了SuppressFinalize,因此需要重新注册(NativeWindow,RequestContextBase,TaskExceptionHolder类)>终结者失败并发现异常.没什么可做的,但稍后重试.该代码包含if(!Environment.HasShutdownStarted&&&!AppDomain.CurrentDomain.IsFinalizingForUnload()),以确保这样做有意义(DynamicResolver和LoaderAllocatorScout类)>对象参与缓存方案并重新缓存(OverlappedData类)