![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Зависание в Win2K при закрытии сокета [D7, informix]
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. Это не в БД спрашивать то надо было.