首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReRegisterForFinalize SuppressFinalize现实生活示例

ReRegisterForFinalize SuppressFinalize现实生活示例
EN

Stack Overflow用户
提问于 2011-10-23 01:21:51
回答 3查看 826关注 0票数 6

我刚刚读了Jeffrey Richter写的这篇文章“Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework”,我想不出任何使用ReRegisterForFinalizeSuppressFinalize的实际示例。

谁能给我举一些例子?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-23 03:26:09

在.NET框架中使用它的地方很少,总是值得一看的地方。基本模式包括:

  • 被释放的对象被重用。Dispose()方法调用了SuppressFinalize,因此需要重新注册(NativeWindow,RequestContextBase,TaskExceptionHolder类)
  • 终结器失败并捕获到异常。除了稍后重试之外,几乎没有什么可做的。该代码用if (!Environment.HasShutdownStarted && !AppDomain.CurrentDomain.IsFinalizingForUnload()) )包装,以确保这样做有意义(DynamicResolver和LoaderAllocatorScout类)
  • 对象参与缓存方案并重新缓存(OverlappedData类)
票数 10
EN

Stack Overflow用户

发布于 2011-10-23 01:31:42

IDisposable的实现通常需要SuppressFinalize:在herehere中查找代码。

我现在在ReRegisterForFinalize上没有一个很好的例子。

票数 4
EN

Stack Overflow用户

发布于 2011-10-23 02:03:50

复活实例时需要使用ReRegisterForFinalize。Resurrection (在链接的文章中提到)是从对象的析构函数(finalizer)重新生成对象的操作。

这只会把问题转移到“什么时候可以复活一个对象”。在我对this question的回答中,我推测连接池或类似的构造可能会使用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7861292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档