Вверх ↑
Ответов: 2125
Рейтинг: 159
#1: 2007-12-26 19:32:18 ЛС | профиль | цитата
Dilma, в той схеме, что ты хотел в примеры скопировать после doSend лучше всё-таки не делать doClose (хаб удали и восстанови связь). Тогда вроде работает без ошибок, и если StrList исправлен, то и память не кушает. И свободное место лучше на диске С искать (а не на Е, как в схеме).
doClose сразу удаляет мультик, а лучше бы он делал это отложенно, через очередь событий. Проблема зарыта в TCP.pas, метод Close, если он вызывается извне, хорошо бы отложить посылкой соответствующего сообщения WM_USER+1. Т.е. моё предложение - переименовать Close и скрыть этот метод, и сделать другой Close, посылающий сообщение.
------------ Дoбавленo:

Только вот, правильность lparam там никак не проверяется, и если сокет уже был закрыт, второе закрытие (если было послано два сообщения о закрытии) чревато exception-ом. Особенно в том случае, если сам объект уже был (как в нашем случае) удалён.
------------ Дoбавленo:

Отсюда вытекает ещё одна проблема - если сокет был удалён, а в очереди сообщений ещё есть пришедшие данные, то та же фигня.
карма: 1

0