title: Timer is not working in cross threads
body: <p>I have 2 global <code>System.Windows.Forms.Timer</code> in my <strong>form</strong>. Both are initialized in form's constructor. But not started yet. Constructor starts a <strong>new thread</strong> and that thread enables and starts both of the timers. Obviously it is all <strong>cross threading</strong>, but it doesn't throw any cross-thread exception. But it doesn't even work. It does not fire the <code>Timer.Tick</code> method. Here is the code:</p>
  
  <p><strong>1st Method:</strong></p>
  
  <p>In form constructor:    </p>
  
  <pre><code>    KeepMeAliveTimer = new Timer();  //timer 1
      KeepMeAliveTimer.Interval = 15000;            
      KeepMeAliveTimer.Tick += KeepMeAlive;
      timer1 = new Timer();   //timer 2
      timer1.Interval = 15000;
      timer1.Tick += timer1_Tick;
      //started a new thread
  </code></pre>
  
  <p>In new thead:</p>
  
  <pre><code>    //after performing some tasks, it enables the timers
      KeepMeAliveTimer.Enabled = true;  //timer 1
      KeepMeAliveTimer.Start();
      timer1.Enabled = true;   //timer 2
      timer1.Start();
  </code></pre>
  
  <p>But it is not firing up Timer's tick events and not even throwing any exception.</p>
  
  <p><strong>2nd Method:</strong></p>
  
  <p>But when I initialized and enabled the <code>Timers</code> in the same thread (Main Thread) they are working perfectly:</p>
  
  <pre><code>    KeepMeAliveTimer = new Timer();   //timer 1
      KeepMeAliveTimer.Interval = 15000;            
      KeepMeAliveTimer.Tick += KeepMeAlive;
      KeepMeAliveTimer.Enabled = true;
      KeepMeAliveTimer.Start();
      timer1 = new Timer();    //timer 2
      timer1.Interval = 15000;
      timer1.Tick += timer1_Tick; 
      timer1.Enabled = true; 
      timer1.Start();  
  </code></pre>
  
  <p>Now the question is; Why the first method is not working if there is not even any exception?</p>