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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2011, 19:27   #1
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию алгоритм работы приложение с потоками

приложение построено примерно по такой схеме:
процедура1 парсит html страничку вытаскивает некоторые данные передает эти данные процедуре2 она формирует post запрос, вернувшийся html код передается процедуре3 в ней происходит парсинг и сохранение нужных данных в файл и вновь вызывается процедура1 и так по кругу пока не прервет пользователь.
При выполнении программы форма становится недоступной, вот и хочу я организовать все с использованием потоков. Отсюда несколько вопросов,
если я код из процедуры1 перенесу в процедуру Execute класса TThread
и если из Execute будет вызвана процедура2 последняя будет работать в созданном потоке или в основном потоке программы? Или для каждой процедуры создавать свой поток?
Что-то я не очень представляю как это все должно работать в потоке?
Подскажите.
fate вне форума Ответить с цитированием
Старый 15.05.2011, 19:54   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> если из Execute будет вызвана процедура2 последняя будет работать в созданном потоке или в основном потоке программы?

будет работать в созданном потоке. Если нужно перейти в главный поток, есть метод Synchronize().

> Или для каждой процедуры создавать свой поток?

если процедуру 1 можно запустить до того, как отработала процедура 2, то можно и несколько потоков, синхронизировать только будет сложнее.

> Что-то я не очень представляю как это все должно работать в потоке?

главное, VCL внутри потоков не трогайте, и будет всё ОК.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 15.05.2011, 21:04   #3
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

Цитата:
главное, VCL внутри потоков не трогайте, и будет всё ОК.
мемо использую (
хотя думаю можно мемо заменить на stringlist
fate вне форума Ответить с цитированием
Старый 15.05.2011, 21:06   #4
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

Цитата:
будет работать в созданном потоке.
тогда еще вопрос, когда пройдет "круг" в конце процедуры3 нужно убить поток и в процедуре1 вновь создать?
fate вне форума Ответить с цитированием
Старый 15.05.2011, 21:45   #5
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> хотя думаю можно мемо заменить на stringlist

это правильно. Если что, поток сможет спокойно писать в stringlist, а основной поток из этого stringlist спокойно читать в memo или куда нужно. Спокойно, в смысле через блокировку по критической секции или подобной.

> нужно убить поток и в процедуре1 вновь создать?

а смысл? Запускаем поток, он запускает процедуры 1 - 2 - 3 - 1 - 2 - 3 - 1 - 2 - 3... пока юзер не остановит это всё. Вот тогда потоку нужно сказать, что пора завершаться, после чего его можно удалить.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 15.05.2011, 22:14   #6
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

veniside спасибо, работает
fate вне форума Ответить с цитированием
Старый 16.05.2011, 10:23   #7
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Использование доп.потоков в этой задаче вовсе не обязательно.
"Размораживание" польз.интерфейса с успехом делается и без этого.
Конкретное решение зависит от конкретных используемых сетевых компонентов или библиотек.
mss вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм работы с графами pro100saniok Помощь студентам 2 16.12.2010 07:05
Delphi. Консольное приложение для работы с txt. файлом MexX Помощь студентам 1 13.05.2009 09:37
Для облегчения работы с TFS - приложение для работы над дефектами и задачами Аякс Софт 1 18.03.2009 11:43
приложение для работы с 3G модемами. locus_ab Работа с сетью в Delphi 2 04.12.2008 12:06