Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отображение прогресса, BackgroundWoker, виснет и все тут 
:(
    Опции темы
emmanuil
Дата 23.5.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: 1
Всего: 3



неполучается, зависает и все тут. Как правильно делать? и почему зависает, если не затруднит, то объясните детально
Код

    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private int Exec(BackgroundWorker bgw)
        {
            int percent = 0;
            int max = 10000000;
            for (int i = 0; i <= max; i++)
            {
                percent += (i / max * 100);
                bgw.ReportProgress(percent);
            }
            return 0;
        }

        private void simpleButton2_Click(object sender, EventArgs e)
        {
            backgroundWorker1.RunWorkerAsync();
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
            backgroundWorker1.CancelAsync();
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker woker = sender as BackgroundWorker;
            e.Result = Exec(woker);
        }

        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            progressBarControl1.Position = e.ProgressPercentage;
        }

        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            MessageBox.Show("Done!");
        }
    }

PM MAIL   Вверх
QryStaL
Дата 4.6.2007, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 3
Всего: 32



Зависает потому, что слишком часто обновляешь ProgressBar, и у приложения не остается времени на перерисовку формы. Можно сдвигать ProgressBar, к примеру, только на десятых долях процента.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
emmanuil
Дата 5.6.2007, 05:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: 1
Всего: 3



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

PM MAIL   Вверх
tol05
Дата 5.6.2007, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 11
Всего: 170



Имеет. У тебя машина только тем и занимается, что каждые несколько миллисекунд пытается что-то нарисовать. Считать некогда даже smile
QryStaL, правильно говорит

Код

private int Exec(BackgroundWorker bgw)
    {
      int max = 10000000;
      int percent = max / 100;
      for(int i = 0; i <= max; i++)
      {
        if((i % percent) == 0)
        {
          bgw.ReportProgress(i / percent);
        }
      }
      return 0;
    }



--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
emmanuil
Дата 5.6.2007, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: 1
Всего: 3



И точно оказывается  smile.
Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0483 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.