Отображение курсора ожидания во время работы backgroundworker

Во время запуска моего приложения Windows я должен позвонить в веб-службу, чтобы получить некоторые данные по умолчанию для загрузки в мое приложение. Во время загрузки формы я запускаю backgroundworker для извлечения этих данных. Я хочу отобразить курсор ожидания, пока не будут получены эти данные. Как мне это сделать?

I ' Я пробовал установить курсор ожидания перед вызовом фонового рабочего для запуска. Когда я сообщаю о прогрессе 100, я возвращаю его к курсору по умолчанию. Курсор ожидания появляется, но когда я двигаю мышью, он исчезает.

Среда:

  • Windows 7 Pro, 64-разрядная
  • VS2010 C # .NET 4.0
  • Windows Forms

РЕДАКТИРОВАТЬ: Я устанавливаю курсор так, как предложил Джей Риггс. Это работает, только если я не двигаю мышью.

* * ОБНОВЛЕНИЕ: Я создал кнопку, которая выполняет следующие действия: Когда я нажимаю кнопку и перемещаю мышь, курсор ожидания появляется независимо от того, перемещаю я мышь или нет.

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;
}
16
задан arc1880 1 March 2011 в 18:58
поделиться