I want to change wpf controls status after click button start.

The picture is what I want.

![what I want](https://i.stack.imgur.com/gPuF5.png)

Following is my code

```
private bool _bWorking = false;
public delegate void UpdateStatusDelegate();

private void SetStatus(bool bEnable)
{
    if (bEnable)
    {
        tbName.IsReadOnly = false;
        barStatus.Visibility = Visibility.Hidden;
        btnStart.IsEnabled = true;
        btnStop.IsEnabled = false;
        btnClose.IsEnabled = true;
    }
    else
    {
        tbName.IsReadOnly = true;
        barStatus.Visibility = Visibility.Visible;
        btnStart.IsEnabled = false;
        btnStop.IsEnabled = true;
        btnClose.IsEnabled = false;
    }
}

internal void UpdateStatus()
{
   SetStatus(true);
   _bWorking = false;
}

private void ThreadFunc()
{
    //for (; ; )
    //{
    //    // do something here
    //    if (_bWorking == false)
    //        break;
    //}
    Thread.Sleep(500);
    this.Dispatcher.Invoke(new UpdateStatusDelegate(UpdateStatus));
}

private void btnStart_Click(object sender, RoutedEventArgs e)
{
    _bWorking = true;
    SetStatus(false);
    this.UpdateLayout();//this.InvalidateVisual();
    try
    {
        Thread t = new Thread(new ThreadStart(() =>
        {
            ThreadFunc();
        }));
        t.IsBackground = true;
        t.Name = "test status";
        t.Start();

        while (t.IsAlive)
        {
            // wait thread exit
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }        
}

private void btnStop_Click(object sender, RoutedEventArgs e)
{
    _bWorking = false;
    SetStatus(true);
}

```

But actually after I click button start, the UI seems frozen, and the thread exited, the UI become normal.

my VS is VS2010.

[Force a WPF control to refresh?](https://stackoverflow.com/questions/818911/force-a-wpf-control-to-refresh)

this post is not work for me.

edit summary:

add delegate void UpdateStatusDelegate() and function UpdateStatus() to my code