Есть ли какие-либо опасности при использовании Application.UseWaitCursor
, чтобы отключить и на указателе мыши песочных часов?Должен ли использоваться Application.UseWaitCursor?
ответ
«Опасность» не восстанавливает курсор.
Вы можете сделать это с помощью 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
Если приложение будет заблокировано до тех пор, длительная эксплуатация работает не будет завершена, будет правильно использовать Application.UseWaitCursor
. Но если у вас есть несколько форм, в которых будет заблокирована только одна форма, лучше установить свойство Cursor
явно в форме.
Вы также должны помнить, что положить Application.UseWaitCursor = false;
в блок finally
, поэтому вы убедитесь, что курсор сброшен в случаях, когда выбрано исключение приложения.
Установка курсора в форме не работает, например, управление текстовым полем переопределяет его. Это действительно причина, по которой свойство существует в первую очередь. –
Да, это правильно, но только для активированных элементов управления. Если у вас длительный процесс, который блокирует форму, вам также необходимо отключить возможность ввода данных. Например. поместите все элементы управления в панель, которую вы можете отключить (Enable = false;) во время обработки. –
См. Http://stackoverflow.com/questions/302663/cursor-current-vs-this-cursor-in-net-c/302865#302865 –
Каков ваш ответ на беспокойство, поднятое в комментарии ниже вашего ответа на этот вопрос? – CJ7
Я не вижу проблемы, кто-то просто использовал класс из неправильной темы. Более типичное использование курсора ожидания - это когда вы * не используете * поток. –