问题描述
|
我正在试验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页面上提供了一个更完整的示例,如果您还没有阅读过该示例,则可能还会发现以下内容:
参考文献薄弱