Question: ```
public void timer_thing()
{
    Thread timer = new Thread(new ThreadStart(() =>
      {
          Thread.Sleep(500);
          if (is_mouse_down)
              timer1.Enabled = true;
      }
    ));
    timer.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{
    //some stuff happens here
}

```

As you can see I want the thread to activate the timer. But the timer doesn't activate. I guess this is not the right way. Or i'm missing something.

Answer: 
Your thread isn't waiting for the `is_mouse_down` event. It just checks after half a second and if it's not the time won't get enabled and the tread closes. Maybe you should try using an event?
If you have questions about c# multithreading you should read [this](http://www.albahari.com/threading/) article. It is really helpful and will show you AutoresetEvent, ManualResetEvents, Thread Timers, Timers, etc. Really good general article.