簡體   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