Следует ли использовать Application.UseWaitCursor? - PullRequest
3 голосов
/ 29 февраля 2012

Есть ли опасность при использовании Application.UseWaitCursor для отключения и включения указателя мыши на песочных часах?

Ответы [ 2 ]

6 голосов
/ 29 февраля 2012

«Опасность» заключается в невозможности восстановления курсора.

Вы можете сделать это с блоками try…finally, чтобы гарантировать, что даже если возникнет исключение, вы восстановите курсор или немного очистите синтаксисоборачивая эту функциональность в класс, который реализует IDisposable, чтобы вы могли использовать вместо него using блоки.

  public class WaitCursor : IDisposable
  {
    public WaitCursor()
    {
      Application.UseWaitCursor = true;
    }

    public void Dispose()
    {
      Application.UseWaitCursor = false;
    }
  }

Использование:

  using (new WaitCursor())
  {

    // do stuff - busy, busy, busy

  } // here the cursor will be restored no matter what happened
2 голосов
/ 29 февраля 2012

Если приложение будет заблокировано до завершения длительной работы, будет правильно использовать Application.UseWaitCursor. Но если у вас есть несколько форм, в которых будет заблокирована только одна форма, лучше установить свойство Cursor явно в форме.

Вы также должны помнить, чтобы поместить Application.UseWaitCursor = false; в блок finally, чтобы обеспечить сброс курсора в тех случаях, когда выдается исключение приложения.

...