dbkk dbkk - 6 months ago 77
C# Question

Force GUI update from UI Thread

In WinForms, how do I force an immediate UI update from UI thread?

What I'm doing is roughly:

label.Text = "Please Wait..."
catch(Exception e)
label.Text = "Error: " + e.Message;
label.Text = "Success!";

Label text does not get set to "Please Wait..." before the operation.

I solved this using another thread for the operation, but it gets hairy and I'd like to simplify the code.


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;

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.