Во время запуска моего приложения Windows я должен позвонить в веб-службу, чтобы получить некоторые данные по умолчанию для загрузки в мое приложение. Во время загрузки формы я запускаю фонового работника для извлечения этих данных. Я хочу отобразить курсор ожидания до тех пор, пока эти данные не будут восстановлены. Как мне это сделать?
Я попробовал установить курсор ожидания перед вызовом фонового рабочего. Когда я сообщаю о ходе 100, я возвращаю его по умолчанию. Курсор ожидания появляется, но когда я перемещаю мышь, он исчезает.
Окружающая среда:
- 64-разрядная версия Windows 7 Pro
- VS2010 С#.NET 4.0
- Windows Forms
EDIT: Я настраиваю курсор так, как предположил Джей Риггс. Он работает только в том случае, если я не перемещаю мышь.
* * UPDATE: Я создал кнопку, которая делает следующее: Когда я нажимаю кнопку мыши и перемещаю мышь, курсор ожидания появляется независимо от того, перемещаю мышь или нет.
void BtnClick()
{
Cursor = Cursors.WaitCursor;
Thread.Sleep(8000);
Cursor = Cursors.Default;
}
Если я делаю следующее: я вижу курсор ожидания, и когда я перемещаю мышь, он исчезает внутри формы. Если я перейду к строке состояния или строке меню, появится курсор ожидания.
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 (!backgroundWorker.IsBusy)
{
backGroundWorker.RunWorkerAsync();
}
void backGroundWorkerDoWork(object sender, DoWorkEventArgs e)
{
UseWaitCursor = true;
Thread.Sleep(8000);
}
void backGroundWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
UseWaitCursor = false;
}