Estoy experimentando con WeakReference y estoy escribiendo un código que comprueba si una referencia débil es válida antes de devolver una referencia fuerte al objeto.Recopilador de basura al analizar referencias débiles
if (weakRef.IsValid)
return (ReferencedType)weakRef.Target;
else
// Build a new object
¿Cómo debo evitar que el GC recoja el objeto entre las llamadas "IsValid" y "Target"?
+1 supongo que realmente es la forma correcta de hacerlo. –
Esto me parece la forma más "natural" de ir. Para completar, requiere el uso de referencias cortas débiles, que en mi caso no es un problema. –
+1 porque es la única forma de estar seguro. Pero no creo que deba transmitirlo al 'ReferenceType' necesario. También puede obtenerlo como 'objeto' y hacer la verificación de validez nula en esto. Dependiendo de lo que le guste hacer con el objeto siguiente, quizás tenga sentido, pero no es necesario para asegurarse de que la instancia esté activa. – Oliver