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?
This problem as described in literature has two solutions:

1) Active waiting 

2) Notifications 

If you want the active waiting solution(which is really an outdated one, your thread should have while loop).

If you want the notification when you should call some method which starts the timer in the mouse down event handler