Отображение приложения, все еще обрабатывающего в приложениях формы C # windows - PullRequest
0 голосов
/ 09 августа 2010

Мне нужно показать какую-то анимацию, пока приложение Windows Form обрабатывает данные до тех пор, пока не выдаст вывод. После завершения обработки анимация остановится. В Dev Express есть отличные инструменты для веб-приложений. Но есть ли у нас что-то похожее в приложениях Windows Form?

Спасибо

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

Ответы [ 4 ]

0 голосов
/ 09 августа 2010

Я делаю подобные вещи с помощью ProgressBar в отдельной форме в отдельном потоке.Вы можете использовать таймер для установки тиков каждые 10 секунд или что-то в этом роде, а затем просто сбросить ProgressBar на ноль, если вам нужно, и продолжить прокрутку.

0 голосов
/ 09 августа 2010

Я бы рекомендовал делегировать работу в BackgroundWorker и показывать индикатор выполнения. Поскольку вы не можете назначать шаги, вы можете просто использовать панель, чтобы отразить количество времени, которое ДОЛЖНО занять.

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

Вы также можете делегировать BackgroundWorker и показывать сообщение со счетчиком или чем-то на переднем плане - «Запрос в процессе. Время истекло: 2 минуты. Предполагаемое время для завершения: 10 минут». И затем также есть кнопка отмены. Нечто подобное.

Просто разные возможности. Ничего особенного, но отсутствие внутреннего доступа к процессу ограничивает ваши возможности.

о, похоже, вы уже получили ответ. Ах хорошо!

0 голосов
/ 09 августа 2010

Я бы посоветовал вам взглянуть на индикатор выполнения в стиле Marque в MSDN. Это просто идет вперед и назад во время вашей операции. В вашем SQL-запросе не будет вызовов или чего-либо еще, так что это позволит вам просто указать, что ваше приложение «работает» над чем-то.

http://msdn.microsoft.com/en-us/library/bb760816%28VS.85%29.aspx

Путем создания индикатора выполнения со стилем PBS_MARQUEE вы можете оживить его таким образом, что показывает активность, но не указывает, что пропорция задачи выполнена. Выделенная часть прогресса планка многократно перемещается по длине бара. Вы можете начать и остановить анимацию и контролировать ее скорость, отправка сообщения PBM_SETMARQUEE. Индикаторы прогресса Marquee не имеют диапазон или положение.

0 голосов
/ 09 августа 2010

Вы захотите взглянуть на класс BackgroundWorker , он позволит вам запускать код в другом потоке и обрабатывать связь между рабочим потоком и потоком пользовательского интерфейса, чтобы вы могли обновитьпользовательский интерфейс соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...