は、このコードを考えてみましょう:GC.Collect
はweakRef.IsAlive
を確認した後とweakRef.Target
を使用する前に実行するため安全な方法で弱い参照のターゲットを取得する方法
var weakRef = new WeakReference(new StringBuilder("Mehran"));
if (weakRef.IsAlive)
{
// Garbage Collection might happen.
Console.WriteLine((weakRef.Target as StringBuilder).ToString());
}
それが可能です。
私はこれに間違っていますか?可能であれば、それを行う安全な方法がありますか?
たとえば、weakRef.GetTargetIfIsAlive()
のようなAPIが適切です。
http://msdn.microsoft.com/en-gb/library/ms404247.aspx –
最初に強力な参照にキャストしてから、「ヌル」を確認する必要があります。あなたの強い参照があらかじめヌルでないことを保証する方法はありません。 –