Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2011, 02:00   #1
Vistar
учащийся
Форумчанин
 
Аватар для Vistar
 
Регистрация: 26.04.2009
Сообщений: 144
Восклицание многопоточное приложение

Необходимо сделать многопоточное winform приложение, например парсер. Т.е. надо скачать 20 страниц и при этом чтобы скачивание выполнялось в другом потоке и после скачивания каждой из страниц на главной форме писало "первая страница скачана", "вторая" и т.д.

Делал так:
объявлял переменные- КоличествоСкачанныхСтраниц и НомерТекущейСтраницыДляСкачивания.
Сделал метод, которой скачивает страницу и увеличивает на 1 КоличествоСкачанныхСтраниц.
Запускаю таймер, в обработчике проверяется-если КоличествоСкачанныхСтраниц равно НомерТекущейСтраницыДляСкачивания то пишем на формочке "такая то страница скачана" и увеличивается на 1 НомерТекущейСтраницыДляСкачивания и создается новый поток в котором запускается метод скачивания новой страницы. Мне необходимо чтобы скачивание шло одно за одним, а не все 20 одновременно.

Подскажите литературу или статьи или примеры или своими словами объясните как правильно это делается.

Заранее благодарен за помощь.
Vistar вне форума Ответить с цитированием
Старый 26.08.2011, 16:25   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Vistar Посмотреть сообщение
Необходимо сделать многопоточное winform приложение, например парсер. Т.е. надо скачать 20 страниц и при этом чтобы скачивание выполнялось в другом потоке и после скачивания каждой из страниц на главной форме писало "первая страница скачана", "вторая" и т.д.
Делайте класс DownLoader.
В нем публичное свойство LoadingPages, публичный метод StartLoading() и приватный метод закачки страницы.
в методе StartLoading() создаете поток с указателем на метод закачки.
и запускаете его.

Принцип:
Из основной формы вы создаете класс вышеуказанный, и вызываете метод StartLoading() который возвращает вам результат. (0 скорее всего)
затем в основной форме создаете и запускаете таймер который наблюдает за LoadingPages и выводит его в ваше место вывода.
Значения свойства изменяется в методе ззакачки страницы.

Можно еще добавить в класс свойства Complete которое сообщит приложению что загрузка завершена.
Таймер естественно все это обрабатывает.
в методе StartLoading загрузка происходит в цикле.
также можно предусмотреть методы принудительного останова потока. В общем дальше дело Вашей фантазии.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
многопоточное программирование jul01 Помощь студентам 0 10.06.2011 17:47
многопоточное приложение favorite Общие вопросы Delphi 0 26.05.2011 19:47
Многопоточное приложение MaXoN66613 Помощь студентам 0 07.06.2010 12:36
Многопоточное приложение на Indy 2 Core2Duo Работа с сетью в Delphi 1 09.04.2009 11:42
Многопоточное приложение на Indy Core2Duo Работа с сетью в Delphi 15 08.04.2009 16:45