Показать прогресс во время выполнения метода в приложении Windows - PullRequest
0 голосов
/ 29 июня 2011

У меня есть приложение в формах c # windows (fw4.0), и у меня есть метод, который создает строку json и отправляет по почте в метод действия на веб-странице.Я не знаю, сколько это займет, но я хочу показать индикатор выполнения во время выполнения метода.Как мне это сделать?У меня есть одна идея - запустить счетчик во время работы метода и показать его пользователю, но я не знаю как ... он должен быть в другом потоке?как?

У меня нет больше полезной информации, чтобы предоставить .. Я надеюсь, что вы можете мне помочь!Спасибо!

Ответы [ 3 ]

1 голос
/ 29 июня 2011

Используйте фоновый рабочий , чтобы предотвратить блокирование пользовательского интерфейса и сообщить о прогрессе.

0 голосов
/ 30 июня 2011

Наконец я сделал! Я должен использовать 2 фоновых работников .. это то, что я сделал .. backgroundWorker1: выполняет метод post. backgroundWorker2: выполняет счетчик TimeSpan. когда запускается backgroundWorker2, устанавливает TimeSpan в 0 и в DoWork, если backgroundWorker1 CancellationPending имеет значение false, тогда я сообщаю о прогрессе в backgroundWorker2. Когда метод post завершится, я установлю backgroundWorker1 в значение CancelAsync, поэтому backgroundWorker2 прекратит работу. Я думаю, что это было мое лучшее решение.

0 голосов
/ 29 июня 2011

Вы можете сообщить о прогрессе на основе двух значений:

  • prob_time - наиболее вероятное количество времени, которое потребуется для выполнения действия;

  • max_time - максимальное количество времени, которое вы готовы подождать, прежде чем считать, что действие не выполнено;

Вы можете заставить индикатор выполнения доходить до определенной точки (например, 80%) в prob_time, затем до 100% в (max_time-prob_time).

Если действие завершается быстрее, чем max_time, вы делаете скачок прогресса до 100% и сообщаете «Успех», в противном случае сообщаете «Сбой»

...