Во время запуска моего приложения Windows я должен позвонить в веб-службу, чтобы получить некоторые данные по умолчанию для загрузки в мое приложение. Во время загрузки формы я запускаю backgroundworker для извлечения этих данных. Я хочу отобразить курсор ожидания, пока не будут получены эти данные. Как мне это сделать?
I ' Я пробовал установить курсор ожидания перед вызовом фонового рабочего для запуска. Когда я сообщаю о прогрессе 100, я возвращаю его к курсору по умолчанию. Курсор ожидания появляется, но когда я двигаю мышью, он исчезает.
Среда:
РЕДАКТИРОВАТЬ: Я устанавливаю курсор так, как предложил Джей Риггс. Это работает, только если я не двигаю мышью.
* * ОБНОВЛЕНИЕ: Я создал кнопку, которая выполняет следующие действия: Когда я нажимаю кнопку и перемещаю мышь, курсор ожидания появляется независимо от того, перемещаю я мышь или нет.
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;
}