Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Для чего нужен компонет 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.
Получается, что польз. интерфейс "как бы не замерзает" на время выполнения этой операции.


Наверх

Титульная страница Поиск, карта сайта Написать письмо