2012-02-28 4 views
1

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

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

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

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

+0

Хм, не уверен, что на самом деле это улучшит работу пользователя. – ken2k

+2

Насколько я могу судить, стандартом является использование счетчика, если нет очевидной метрики, чтобы определить, сколько времени займет задача. Во всяком случае, это то, что я делаю. –

+1

В принципе, любая форма ProgressBar ничего не говорит о том, что «Hourglass Cursor» уже не означает. Просто используйте это. – Bob77

ответ

1

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

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

3

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

принципы дизайна Microsoft для User Experience (UX) дают четкие правила для прогресса баров here:

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

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

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

[Редактировать]

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

пошаговое руководство в WPF: Как реализовать A Modern Progress Dialog For WPF Applications

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

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

+0

Как реализовать неопределенный индикатор выполнения в C#? Указанная вами ссылка описывает это, но не показывает никакого кода. – CJ7

+0

Крейг - вы, кажется, делаете это слишком сложным для себя помощником. У вас есть два варианта: показать индикатор выполнения/загрузчик или что-то еще, что показывает, что что-то происходит, но без каких-либо указаний относительно того, сколько он сделал или сколько он оставил, или у вас есть возможность показать текущий прогресс. У вас нет роскоши решимости выбрать последний, не ставя под угрозу хороший принцип дизайна пользовательского интерфейса, поэтому вам понадобится анимация/загрузчик/бар (ваш выбор), который показывает, что что-то происходит, что желательно, плавно. –

+0

@CraigJ: вы можете найти пошаговое руководство с загружаемым кодом исходного кода по следующей ссылке. «Как реализовать современный диалог прогресса для приложений WPF»: http://jbaurle.wordpress.com/2011/04/22/how-to-implement-a-modern-progress-dialog-for-wpf-applications/ –

Смежные вопросы