Button won't re-enable after thread is run
===

I have a Thread "thr" and its delegate "updateStuff" set up like this (as global variables):

    private Thread thr;
    private delegate void updateStuff(bool isDone);

If the user checks a box called "auto-do-stuff" and then clicks the button "doStuff":

    private void doStuff_Click(object sender, EventArgs e)
    {
      doStuff.Enabled = false;
      doStuff.Text = "Processing...";
      auto-do-stuff.Enabled = false;
      wait_pic.Visible = true;

      thr = new Thread(runProgram);
      thr.Start();
    }

Wait_pic is just an animated gif.  Then for "runProgram" I have:

    private void runProgram()
    {
      //do my stuff
      this.Invoke(new updateStuff(this.UpdateIt), new object[] {true});
    }

so when the program is done is sends a "done" signal to UpdateIt() in the form of the bool isDone = true.  Here's UpdateIt():

    private void UpdateIt(bool isDone)
    {
      doStuff.Enabled = true;
      doStuff.Text = "Do Stuff" //the original text before it was pushed
      auto-do-stuff.Enabled = true;
      auto-do-stuff.Checked = false;
      wait_pic.Visible = false;
    }

So basically if auto-do-stuff is checked and the user pushes the button doStuff, it disables both the button and checkbox and show the animated gif while the background thread is working.  When that thread is done, it indicates that it is, and the button and checkboxes should both be re-enabled and the gif should be gone.  

For some reason, the the checkbox is re-enabled and unchecked, and the gif is gone, as expected, but the doStuff button is still disabled and reads "processing...".  How could everything else work EXCEPT the button?  How do I fix it?