![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 318
|
![]()
приложение построено примерно по такой схеме:
процедура1 парсит html страничку вытаскивает некоторые данные передает эти данные процедуре2 она формирует post запрос, вернувшийся html код передается процедуре3 в ней происходит парсинг и сохранение нужных данных в файл и вновь вызывается процедура1 и так по кругу пока не прервет пользователь. При выполнении программы форма становится недоступной, вот и хочу я организовать все с использованием потоков. Отсюда несколько вопросов, если я код из процедуры1 перенесу в процедуру Execute класса TThread и если из Execute будет вызвана процедура2 последняя будет работать в созданном потоке или в основном потоке программы? Или для каждой процедуры создавать свой поток? Что-то я не очень представляю как это все должно работать в потоке? Подскажите. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
> если из Execute будет вызвана процедура2 последняя будет работать в созданном потоке или в основном потоке программы?
будет работать в созданном потоке. Если нужно перейти в главный поток, есть метод Synchronize(). > Или для каждой процедуры создавать свой поток? если процедуру 1 можно запустить до того, как отработала процедура 2, то можно и несколько потоков, синхронизировать только будет сложнее. > Что-то я не очень представляю как это все должно работать в потоке? главное, VCL внутри потоков не трогайте, и будет всё ОК.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 318
|
![]() Цитата:
хотя думаю можно мемо заменить на stringlist |
|
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 318
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
> хотя думаю можно мемо заменить на stringlist
это правильно. Если что, поток сможет спокойно писать в stringlist, а основной поток из этого stringlist спокойно читать в memo или куда нужно. Спокойно, в смысле через блокировку по критической секции или подобной. > нужно убить поток и в процедуре1 вновь создать? а смысл? Запускаем поток, он запускает процедуры 1 - 2 - 3 - 1 - 2 - 3 - 1 - 2 - 3... пока юзер не остановит это всё. Вот тогда потоку нужно сказать, что пора завершаться, после чего его можно удалить.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 318
|
![]()
veniside спасибо, работает
|
![]() |
![]() |
![]() |
#7 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
![]()
Использование доп.потоков в этой задаче вовсе не обязательно.
"Размораживание" польз.интерфейса с успехом делается и без этого. Конкретное решение зависит от конкретных используемых сетевых компонентов или библиотек. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Алгоритм работы с графами | 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 |