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?
You can use [AutoResetEvent](http://msdn.microsoft.com/en-us/library/system.threading.autoresetevent.aspx) to automatically trigger it from Button Click handler.

So in thread just set:

```
autoResetEvent.WaitOne();
timer1.Enabled = true; 

```

and in button click handler:

```
autoResetEvent.Set();

```

BTW, why you can not initialize a Timer in the Click handler?