title: C# Destructor not calling after out of scope
body: <p>I have problem with destructor after going out of scope(it is calling but after some time and need to make an action on form, for example change radio button), maybe there's mistake in my code.  Take a look:</p>
  
  <pre><code>namespace WindowsFormsApplication2
  {
      public partial class Form1 : Form
      {
  
          public Form1()
          {
              InitializeComponent();
              EventLogger.Print += delegate(string output)
              { if (!textBox1.IsDisposed) this.Invoke(new MethodInvoker(() =&gt; textBox1.AppendText(output + Environment.NewLine)), null); };
          }
  
          private void button1_Click(object sender, EventArgs e)
          {
              TestClass test = new TestClass();
          }
      }
      public static class EventLogger
      {
          public delegate void EventHandler(string output);
          public static event EventHandler Print;
          public static void AddLog(String TextEvent)
          {
              Print(TextEvent);
          }
      }
      public class TestClass
      {
          public TestClass()
          {
              EventLogger.AddLog("TestClass()");
          }
          ~TestClass()
          {
              EventLogger.AddLog("~TestClass()");
          }
      }
  
  }
  </code></pre>