
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.89] |
![]() |
|
Сообщ.
#1
,
|
|
|
Использую Lazarus + Indy 10, приложения под Windows.
Для сервера использую: TIdCmdTCPServer , определил несколько комманд, на клиенте использую TIdTCPClient. В целом все работает шорошо. Есть проблемы с серверной частью, если срабатывает событие OnException , или сервер долго работает (больше 4 дней непрерывно) то судя по диспетчеру задач у моего серверного приложения в моменты когда нет клиентских подключений кол-во потоков увеличивается с 5 например до 15 (смотрю по Диспетчеру задач) и так и остается. Т.е. работает серверное приложение, как только запускаю у него 5 потоков, приложение принимает клиентские подключения ,в этот момент кол-во потоков увеличивается на 1 или 2 - смотря сколько одновременно клиентов подключаются, после отключения клиентов потоков снова становится 5, но после того как срабатывает OnException - кол-во потоков у приложения увеличивается скажем до 15 и в моменты простоя уже у приложения не 5 потоков а 15! Причем не на каждом событии OnException кол-во потоков увеличивается (возможно зависит от типа исключения). В чем может быть проблема? |
Сообщ.
#2
,
|
|
|
Проблему вроде как решил установкой тайм аута во время чтения данных на сервере.
В обработчике комманды, первой добавляю эту строчку: ![]() ![]() ASender.Context.Connection.IOHandler.ReadTimeout := 10000; // 10 сек. |