![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Для чего нужен компонет IdAntiFreeze?
leonidus © (2004-03-15 20:40:00)Мастера прошу ногами не пинать, подскажите пожалуйста для чего нужен компонент из набора Indy IdAntiFreeze и за что отвечает его свойство IdleTimeOut?
Заранее искренне благодарен.
leonidus (2004-03-19 23:03:00) [1]Может быть, потому что я все делал методом научного втыка. А как надо правильно использовать synchronize?
Digitman (2004-03-19 09:10:00) [2]
> что я делаю не так?
наверно, метод synchronize() используешь там, где он как раз не нужен
nikkie (2004-03-18 20:02:00) [3]>Но приложение периодически подвисает, что я делаю не так?
кто ж тебя знает... покажи код - как создаешь потоки, как проверяешь, что "поток отработал", как "передаешь ему очередной URL".
leonidus (2004-03-18 18:56:00) [4]Так я и использую потоки а IdAntiFreeze использую именно потому что в потоках работают именно компоненты Инди а именно IdHTTP. Может я и кривовато делаю, но я просто положил на форму 4 компонента IdHTTP для каждого организую свой поток и по таймеру слежу как только поток отработал передаю ему очередной URL из очереди. Но приложение периодически подвисает, что я делаю не так?
nikkie (2004-03-17 18:42:00) [5]>leonidus
ну так а зачем загружать основной поток? оставь его для юзера, а скачивание и обработка - в дополнительных потоках. IdAntiFreeze - это решение для ленивых, для тех, кто не хочет потоки делать...
>KyRo
нет, не нужно поскольку
1. IdAntiFreeze работает только для инди
2. в WinSock есть асинхронные сокеты, а с ними разговор другой
3. если даже использовать WinSock в блокирующем режиме, то см.1, надо использовать потоки.
leonidus (2004-03-17 18:29:00) [6]>nikkie в каком смысле "основной поток не загружен" ? У меня программа в несколько потоков скачивает файлы из инета а потом скачанные файлы парсятся, так что думаю основной поток всегда при деле:) Но все равно подвисает, даже если я везде понатыкаю Application.ProcessMessages
>KyRo - не понял мысль, а что еще можно исользовать?
KyRo (2004-03-17 03:25:00) [7]Нужно ли подобное чудо использовать для WinSock ?
nikkie (2004-03-16 21:36:00) [8]>при закачке потоками исаользуя IdHTTP
если основной поток не загружен, то зачем тогда IdAntiFreeze?
leonidus (2004-03-16 21:21:00) [9]Спасибо за ответы. Я в принципе так и предполагал, выставил значение IdleTimeOut в 10 но программа при закачке потоками исаользуя IdHTTP все равно иногда подвисает - окно не прорисовывается. Можно это как-то вылечить?
S@shka (2004-03-15 22:39:00) [10]Сокеты Indy являются блокируемыми и поэтому возможно "подвисание" твоего приложение. Чтобы от этого уйти необходимо расположить на форме данный компонент.
Verg (2004-03-15 22:38:00) [11]Чтобы при операциях клиентских компонентов (напр., IdTcpClient и т.п.), которые могут заблокировать работу главного потока приложения, периодически вызывать Application.ProcessMessages. Период этот и будет равен тому самому свойству IdleTimeOut.
Получается, что польз. интерфейс "как бы не замерзает" на время выполнения этой операции.