Considerate questo codice:Come ottenere la destinazione di un riferimento debole in modo sicuro
var weakRef = new WeakReference(new StringBuilder("Mehran"));
if (weakRef.IsAlive)
{
// Garbage Collection might happen.
Console.WriteLine((weakRef.Target as StringBuilder).ToString());
}
E 'possibile per GC.Collect
a correre dopo aver controllato weakRef.IsAlive
e prima di usare il weakRef.Target
.
Mi sbaglio con questo? Se è possibile, c'è un modo sicuro per farlo?
Ad esempio un'API come weakRef.GetTargetIfIsAlive()
sarebbe appropriata.
Controlla http://msdn.microsoft.com/en-gb/library/ms404247.aspx –
Dovresti prima eseguire il cast su un riferimento forte e quindi cercare "null". Non c'è modo di assicurare che il tuo riferimento forte non sarà nullo in anticipo. –