индикатор выполнения не показывает результаты выполнения? - PullRequest
1 голос
/ 25 марта 2010

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

Ответы [ 3 ]

9 голосов
/ 25 марта 2010

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

Используйте взамен BackgroundWorker и используйте событие ProgressChanged для обновления индикатора выполнения.

Также не забудьте установить WorkerReportsProgress в true на фоновом рабочем месте.

0 голосов
/ 06 января 2011

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

0 голосов
/ 25 марта 2010

См. Этот вопрос StackOverflow:

Обновление DataGrid из BackGroundWorker

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

Если не попробовать использовать следующий подход (Выполняет указанный делегат в потоке, который владеет дескриптором основного элемента управления, с указанным списком аргументов.):

<code>
 //In Form.Designer.cs </p>

<p>ProgressBar progressBar= new ProgressBar (); </p>

<p>//In code behind under Background worker method 
 ProgressVlaueSetter SetProgressValueDel = SetProgressValue;<br>
 if (progressBar.InvokeRequired) 
 {<br>
   progressBar.Invoke(SetProgressValueDel , 20); 
 } </p>

<p>private delegate void ProgressVlaueSetter (intvalue); </p>

<p>//Set method invoked by background thread 
 private void SetProgressValue(intvalue) 
 { 
   progressBar.Value= value; 
 } 
 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...