分析弱引用时阻止垃圾收集器

问题描述

| 我正在试验WeakReference,并且正在编写代码,以在将强引用返回给对象之前检查弱引用是否有效。
if (weakRef.IsValid)
    return (ReferencedType)weakRef.Target;
else
    // Build a new object
我应该如何防止GC在\“ IsValid \”和\“ Target \”调用之间收集对象?     

解决方法

        您应该改为执行以下操作:
var rt = weakRef.Target as ReferencedType;

if (rt != null)
    // You now have a strong reference that you can safely use
如果您成功获得了强有力的参考,则可以确保GC不会收集该参考。 MSDN WeakReference页面上提供了一个更完整的示例,如果您还没有阅读过该示例,则可能还会发现以下内容: 参考文献薄弱