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

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

Зависание в Win2K при закрытии сокета [D7, informix]


Страницы:   1 2

Torin ©   (2006-09-01 16:55:00) 

Уважаемые мастера!

Проект, в котором я участвую (уже) пишется (и поддерживается) около 5 лет (разными людьми, большая текучка). Вкрадце: Informix, MIDAS, куча DLL и т.д.
Работа с сервером приложений: TClientDataSet через TSocketConnection.
При выходе из программы происходит зависание в Win2K: программа висит себе в памяти и не закрывается. От количества открытых наборов данных и объема запрошенных (переданных) данных это никак не зависит.
В WinXP (разных версий) такого не наблюдается.
Подскажите, с чем это может быть связано и как с этим бороться.


Сергей М.   (2006-09-04 12:51:00) [21]


> DLL тут не при чем


А к чему тогда упомянул в [3] ?


> В Win2K виснет при выходе, а в ХР - все нормально.


Пробуй так

DM.SC.AppServer := Unassigned;
DM.SC.Disconnect;


Torin   (2006-09-04 12:42:00) [22]


> DLL-то тут причем ?


DLL тут не при чем. В Win2K виснет при выходе, а в ХР - все нормально.


Сергей М.   (2006-09-04 12:39:00) [23]

DLL-то тут причем ?


Torin   (2006-09-04 12:27:00) [24]

Сорри... виноват...
не CLOSE а DM.SC1.Connected:=False


Сергей М.   (2006-09-04 12:25:00) [25]


> ПОДВИСАНИЕ ЕСТЬ на .close


Хоть убей - не вижу никакого Close() среди методов TSocketConnection.


Torin   (2006-09-04 12:15:00) [26]

ПОДВИСАНИЕ ЕСТЬ на .close и на FreeAndNil
Если запущено из-под делфи (D7, Win2K) то все нормально.

Получается, что сокет из-под дельфи на закрытии сокета ничего от сервака не хочет? И на ХР тоже?

При запуске проги сокет креатится и открывается. При закрытии - закрывается. Переподключений за сеанс работы нету.


Сергей М.   (2006-09-04 11:59:00) [27]


> Torin ©   (04.09.06 11:14) [3]
>
> Клиентское робочее место. Потоков не используем


Еще как используете)

TTransportThread создается для каждого активного TSocketConnection


ANB   (2006-09-04 11:18:00) [28]


> Torin ©   (04.09.06 11:14) [3]

Проверь, нет ли подвисания на
> DM.SC.Close

и на
> FreeAndNil(DM.SC)


Есть подозрение, что сокет пытается сообщить серверу, что он разрывает соединение и ждет от сервера ответа. А сервер не хочет отвечать.

ЗЫ. А зачем трехслойку повесили на сокеты, если можно DCOM использовать. Там все красиво и хорошо работает.


Torin   (2006-09-04 11:14:00) [29]

Клиентское робочее место. Потоков не используем. Виснет на закрытии сокета. Иногда программа все таки закрывается со временем. Сокет пробовали закрывать на FormCloseQuery так:
SC: TSocketConnection

DM.SC.Close

и так

FreeAndNil(DM.SC)

Креатим сокет РУЦЯМИ при запуске программы. DM общий для всех DLL. Но прога виснет на выходе даже тогда, когда DLL не загружаются. А запускается основная форма, которая проводит аутентификацию юзера.


Сергей М.   (2006-09-04 09:10:00) [30]


> программа висит себе в памяти и не закрывается


Какая программа-то ? В трехзвенке их аж целых три ..


ANB   (2006-09-01 17:00:00) [31]

1. Есть ли потоки.
2. Если нету - искать отладчиком, где именно виснет.
3. Это не в БД спрашивать то надо было.


Страницы:   1 2

Наверх

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