During the start of my windows application, I have to make a call to a web service to retrieve some default data to load onto my application. During the load of the form, I run a backgroundworker to retrieve this data. I want to display the wait cursor until this data is retrieved. How would I do this?
I've tried setting the wait cursor before calling the backgroundworker to run. When I report a progress of 100 then I set it back to the default cursor. The wait cursor comes up but when I move the mouse it disappears.
Environment:
EDIT: I am setting the cursor the way Jay Riggs suggested. It only works if I don't move the mouse.
**UPDATE: I have created a button click which does the following: When I do the button click and move my mouse, the wait cursor appears regardless if I move my mouse or not.
void BtnClick()
{
Cursor = Cursors.WaitCursor;
Thread.Sleep(8000);
Cursor = Cursors.Default;
}
If I do the following: I see the wait cursor and when I move the mouse it disappears inside the form. If I move to my status bar or the menu bar the wait cursor appears.
Cursor = Cursors.WaitCursor;
if (!backgroundWorker.IsBusy)
{
backGroundWorker.RunWorkerAsync();
}
void backGroundWorkerDoWork(object sender, DoWorkEventArgs e)
{
Thread.Sleep(8000);
}
void backGroundWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Cursor = Cursors.Default;
}
If I do the following: The wait cursor appears and when I move the mouse it still appears but will sometimes flicker off and on when moving in text fields. Although the cursor changes to the wait cursor, it doesn't prevent you from clicking on anything.
if (!backgroundWorker.IsBusy)
{
backGroundWorker.RunWorkerAsync();
}
void backGroundWorkerDoWork(object sender, DoWorkEventArgs e)
{
UseWaitCursor = true;
Thread.Sleep(8000);
}
void backGroundWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
UseWaitCursor = false;
}
Does UseWaitCursor
work? (Set to true when calling RunWorkerAsync(), and false when the completion event is called). What are you using to set the cursor now?
Don't display a wait cursor for this - instead, use a control on your form to indicate that the backgroundworker is busy doing something. The wait cursor is an appropriate indicator for the UI thread to use (since it indicates that the user can't/shouldn't touch anything), but it's not appropriate for something happening in the background.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With