At first I wondered why the OP hadn’t already marked one of the responses as the answer, but after trying it myself and still have it not work, I dug a little deeper and found there’s much more to this issue then I’d first supposed.
A better understanding can be gained by reading from a similar question: Why won’t control update/refresh mid-process
Lastly, for the record, I was able to get my label to update by doing the following:
private void SetStatus(string status)
{
lblStatus.Text = status;
lblStatus.Invalidate();
lblStatus.Update();
lblStatus.Refresh();
Application.DoEvents();
}
Though from what I understand this is far from an elegant and correct approach to doing it. It’s a hack that may or may not work depending upon how busy the thread is.