Please see code below. The destructors are never called. Anyone know why and how this can be rectified?
public partial class Form1 : Form
{
private Goo goo;
public Form1()
{
InitializeComponent();
goo = Goo.GetInstance();
}
}
public class Goo
{
private foo f = new foo();
private static Goo goo;
private Goo()
{}
public static Goo GetInstance()
{
if(goo!=null)
{
goo = new Goo();
}
return goo;
}
~Goo()
{
}
}
class foo
{
~foo()
{
}
}
Objects referenced by static fields are not simply finalized unless you clear (set to
null) the field – and even then it is non-deterministic and not guaranteed. Static fields count as root objects.When (and why) would you expect this to be collected/finalized? It is still accessible…