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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как создать поток с помощью backgroundWorker? Что добавлять в события DoWork, Progress 
:(
    Опции темы
mrHunter
Дата 23.10.2007, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

 private void frmFindPrimes_Load(object sender, EventArgs e)
 {
     Thread thrd = new Thread(new ThreadStart(work));
     thrd.Start();
 }

// Основной, очень трудоемкий метод
public void work()
 {
     for (ulong i = startValue; i < endValue; i += 2)
     {
          if (IsSimple(i))
          {
                lstPrimes.Items.Add(i); // Вывод на ListBox
          }
      }
 }



При использовании данного кода -- естейственно возникает ошибка при добавлении в ListBox...

А как нужно сделать, используя backgroundWorker? Что-то я читал, никак не разобрался... Что именно вставлять в события DoWork, ProgressChanged? Чтобы не было никаких зависаний программы во время долгих вычислений...

Пожалуйста, помогите. Заранее спасибо.
PM MAIL   Вверх
mrHunter
Дата 23.10.2007, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ответ нашел сам...

Код

 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            for (ulong i = startValue; i < endValue; i += 2)
            {
                if (IsSimple(i))
                {
                    lstPrimes.Invoke(new MethodInvoker(delegate()
                    {
                        lstPrimes.Items.Add(i);
                    }));                    
                }
            }
        }


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

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


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

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


 




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


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

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