Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

TIdTCPClient.Connect подвисает   Найти похожие ветки 

 
mRodion ©   (2004-04-15 09:46) [0]

Привет всем!
Использую компоненту Indy TCPClient для связи со специфическим сервером в сети по специфическому протоколу.
Подключение к серверу делается в общем случае так:

TCPSocket.Port:=FPort;
TCPSocket.Host := FHost;
TCPSocket.Connect (FInterval);

В случае когда Finterval задан большим (несколько секунд), а сервер не доступен, компонента, пытаясь подключиться, вешает намертво приложение. То есть пользователь не имеет возможности ни свернуть его, не развернуть, ни нажать какую-нибудь кнопку.
После заданного таймаута компонента возвращает ошибку и программа продолжает нормально работать.

Кто-нибудь знает, как побороть это подвисание? В общем-то Indy довольно распространены... Кстати, подобные проблемы наблюдаются и при использовании метода ReadLn, когда сервер по каким-то причинам задерживает ответ (или ответ идет по очень медленному каналу связи).

Использую Indy 9.0, D5, W2k


 
Digitman ©   (2004-04-15 09:55) [1]

простейшее решение - брось на форму с TIdTCPClient компонент TIdAntifreeze


 
mRodion ©   (2004-04-15 10:18) [2]

Опа!
Спасибо! Не знал.
А что делать, если я компонент TIdTCPClient кидаю не на форму, а создаю динамически в своим компонентах?

Просто создать еще и Антифриз?


 
Digitman ©   (2004-04-15 10:30) [3]

да.
если оба компонента создаются в осн.код.потоке (неважно как - динамически либо будучи "брошенными" на форму), то антифриз поможет в любом случае



Страницы: 1 вся ветка

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.124 c
1-1084347212
rams
2004-05-12 11:33
2004.05.30
ProcessMessages... и другие


1-1084781602
Vadim X
2004-05-17 12:13
2004.05.30
Как сбросить кэш?


11-1073629236
azsd
2004-01-09 09:20
2004.05.30
bugs report: KOLPNG


6-1082015337
Dmitrij_K
2004-04-15 11:48
2004.05.30
Опять про NETSEND


8-1078420914
miek
2004-03-04 20:21
2004.05.30
DirectDraw: создание поверхностей