Как отобразить индикатор занятости в длительном процессе C # .NET CF 2.0? - PullRequest
1 голос
/ 28 июля 2010

Мне нужно отобразить индикатор «занят» в форме при выполнении длительной одиночной команды (ReadXML или WriteXML).Пока что я использую

Cursor.Current = Cursors.WaitCursor;

, но я ищу более подходящий способ сделать это.Нет необходимости отображать процент выполнения, только визуальная справка о том, что программа работает (например, стиль выделения ProgressBar - недоступен для .NET CF -).

Я использую C # / WinForms / .NETCF 2.0

TIA

1 Ответ

3 голосов
/ 28 июля 2010

Отображение прогресса часто желательно.Но вы делаете должны иметь возможность измерить прогресс, чтобы сделать это значимым.Предполагая, что вы имели в виду DataSet.ReadXml (), этот класс не имеет какого-либо события ProgressChanged, которое вы могли бы использовать, чтобы сообщить пользователю, как далеко продвинулась работа.Вы также не можете заранее догадаться, сколько времени это займет.Время выполнения примерно пропорционально размеру XML-файла, но пропорцию точную невозможно точно угадать.

Все, что вы можете сделать, это сообщить пользователю: «Я занят,не ждите ничего на некоторое время ".Курсор для песочных часов был стандартным способом сделать это в течение последних 20 лет.Вы можете полюбоваться анимацией.И это все, чем является ProgressBar в режиме шатер.Это совсем не помогает пользователю.Хотя в него добавлено немного информации: «операционная система не рухнула».Полезно 20 лет назад.

Вы можете создать свою собственную анимацию.Работают ли анимированные GIF на CF?Если нет, вы можете перевернуть растровые изображения самостоятельно.Однако вы берете на себя дополнительное бремя, вы должны поддерживать анимацию анимации.Для этого необходимо запустить вызов ReadXml () в другом потоке, чтобы поток UI был доступен для обновления изображения.Нет никакого BackgroundWorker в CF, вам придется раскрутить эту нить самостоятельно.

...