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: 
It could be that `is_mouse_down` is `false` whenever the thread hits that instruction. The thread is not going to magically wait for it to turn `true`.

However, you have another, bigger problem to worry about. The thing is you cannot touch any UI element from a worker thread or any other other than the UI thread. This includes the `System.Windows.Forms.Timer`. All sorts of undefined chaos may ensue. Your application may fail unpredictably and spectacularly.

It is not really clear to me why a thread is needed in the first place. Can you not handle the `Control.MouseDown` event and enable the timer in the event handler for that event? That is how I would solve the problem.
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