Question
At the beginning of a section of C# code that could take several seconds to complete, I'd like to display a non modal form with a label that just says, "Please wait..."
WaitForm myWaitForm = null;
try
{
// if conditions suggest process will take awhile
myWaitForm = new WaitForm();
myWaitForm.Show();
// do stuff
}
finally
{
if (myWaitForm != null)
{
myWaitForm.Hide();
myWaitForm.Dispose();
myWaitForm = null;
}
}
The problem: the WaitForm doesn't completely display before the rest of the code ties up the thread. So I only see the frame of the form. In Delphi (my old stomping ground) I would call Application.ProcessMessages after the Show() Is there an equivalent in C#? Is there a canned "status" form that I can use in situations like this? Is there a better way to approach this?
Thanks in advance. David Jennings
Solution
i agree on the "other thread" suggestion, but for simple and short purposes Application.DoEvents() will do.
OTHER TIPS
Yo need to run the do stuff part in a different thread.
and then all myWaitForm.Show()
Take a look at BackgroundWorker
class here
You'd better move your "do stuff" code to other thread. and use Application.DoEvents() to proces the form messages
The term you're looking for is "splash screen".
Here are a few related comments. https://stackoverflow.com/search?q=splash+screen+c%23