繁体   English   中英

如何清理弱引用的集合?

[英]How to clean up a collection of weak references?

我有一个集合,其中填充了对应用程序中对象的弱引用。 清理此类集合的过期引用的最佳方法是什么。 有一个定时器对象定期查找死引用并删除它们是一个好主意吗? 有没有更好的方法在C#.NET中执行此操作? 编辑:在我的场景中,该集合将为应用程序创建一次,并且在应用程序运行时将存在,因此将会增大。 保持其尺寸非常重要。

我更喜欢框架版本3.5或更早版本的解决方案。 谢谢。

在计时器中执行它可能会过度,并引入并发问题来处理。

如何清理死亡引用作为其他操作的一部分呢? 例如,如果它是一个列表并且排序并不重要,那么添加一个新项可以用新的一个替换它找到的第一个死引用而不是将它附加到结尾。 或者,当您不希望发生过于频繁发生的事件时触发扫描 - 可能是在查找检索到死引用时。

你可以开始一个交替的线程

  • 等待完全垃圾收集完成
  • 摆脱不必要的弱点。

http://msdn.microsoft.com/en-us/library/system.gcnotificationstatus.aspx

正如其他人所提到的,你将不得不处理涉及单独线程的任何方法的并发问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM