Асимптотический индикатор выполнения для неизмеримого внешнего процесса? - PullRequest
1 голос
/ 28 февраля 2012

Что должен делать индикатор выполнения, когда программа ожидает завершения внешнего процесса, и нет способа измерить его прогресс?

Хочу заметить, что в этом ответе предлагается индикатор выполнения в стиле Marquee: https://stackoverflow.com/a/6357655/327528

Но как насчет асимптотического индикатора выполнения, который становится все медленнее и медленнее, пока он не остановится из-за того, что пиксели не могут становиться бесконечно малыми? Это хорошая идея и как бы вы ее реализовали?

Пожалуйста, дайте ответ на одном или обоих VB6 и C #.

Ответы [ 2 ]

3 голосов
/ 28 февраля 2012

Не стоит такой асимптотический индикатор выполнения. Вместо этого вы должны использовать « Неопределенные индикаторы выполнения » (см. Следующую ссылку).

Рекомендации Microsoft по разработке пользовательского интерфейса (UX) содержат четкие правила для индикаторов выполнения здесь :

Используйте неопределенные индикаторы выполнения для операций, требующих неограниченное количество времени или доступ к неизвестному количеству объектов. Используйте тайм-ауты для определения границ для операций, основанных на времени.

(Основные моменты мной.)

  • Четко указывают на отсутствие прогресса . Индикатор выполнения должен не продвигаться, если нет прогресса. Вы не хотите, чтобы пользователи ждали на неопределенный срок для операции, которая никогда не будет завершена.

[Изменить]

Для лучшей читабельности, я добавляю свою дополнительную информацию из комментариев здесь.

Краткое руководство по WPF: как реализовать Современный диалог прогресса для приложений WPF

Кроме того, если вы хотите использовать вместо этого анимацию, Visual Studio предоставляет во всех версиях (за исключением версии Express, я думаю) библиотеку значков с разрешением использовать эти значки в вашем проекте: Библиотека изображений Visual Studio . Сначала вам нужно будет извлечь их из формата ZIP, но я уверен, что вы справитесь с этой задачей ..; -)

Вы можете найти анимацию GIF status_anim.gif в подпапке \Animations.

1 голос
/ 28 февраля 2012

Вы можете либо представлять прогресс, либо нет.Если это «неизмеримый внешний процесс», то вы не можете.Так что решать, что может делать индикатор выполнения, решать самому, «нет» - это выбор дизайна.По моему личному мнению, простой цикл сделает эту работу (спираль?) - я бы не хотел, чтобы моя анимация перешла во что-то, что могло бы дать впечатляющий прогресс, достигнутый в ощутимой степени.

Редактировать:И я не могу комментировать, подходит ли асимптотический индикатор выполнения или нет - я понятия не имею, что это такое.

...