Вверх ↑
Этот топик читают: Гость
Ответов: 655
Рейтинг: 18
#1: 2013-05-22 13:40:35 ЛС | профиль | цитата
Всем привет!

Запрашиваю с 2х компов в локалке файлик status.xml через компонент HTTP_Get и вывожу содержимое в MEMO.
Файлик надо запрашивать раз в секунду, использую MMTimer.
Если оба компа доступны проблем нет, все работает.
Если хоть один недоступен то программа через определенное время зависает или вылетает.
Начал отслеживать проблему заметил что если один из компов в сети не доступен, то программа в диспетчере задач создает до 750 потоков..

В компоненте HTTP_Get есть точка Wait, если использовать True то он ждет закачки файла, если False -то выполняется в отдельном потоке который не завершается в следствии чего кол-во потоков растет.

Подскажите пожалуйста почему не завершаются потоки? Как это можно исправить?

code_31051.txt






------------ Дoбавленo в 13.40:
p.s. использовать свойство Wait True не представляется возможным в виду того, что если один из компов не доступен, то ответ от второго компа получу более чем через 10 секунд..сам
карма: 0

0
файлы: 1code_31051.txt [891B] [196]
Ответов: 1343
Рейтинг: 31
#2: 2013-05-22 14:26:55 ЛС | профиль | цитата
Думаю так будет лучше и вылетов не должно быть!

code_31054.txt
карма: 2

0
файлы: 1code_31054.txt [911B] [201]
Ответов: 655
Рейтинг: 18
#3: 2013-05-22 16:23:12 ЛС | профиль | цитата
Rysik, я ж написал использовать свойство Wait True не представляется возможным в виду того, что если один из компов не доступен, то ответ от второго компа получу более чем через 10 секунд..)))
------------ Дoбавленo в 16.23:
Не подходит это решение
карма: 0

0
Разработчик
Ответов: 26155
Рейтинг: 2127
#4: 2013-05-22 16:35:42 ЛС | профиль | цитата
Gunnman писал(а):
что если один из компов не доступен

А попинговать
карма: 22

0
Ответов: 1343
Рейтинг: 31
#5: 2013-05-22 16:45:11 ЛС | профиль | цитата
nesco писал(а):
А попинговать


воо точно так лучше то есть перед скачкой поставь проверку пинга
карма: 2

0
Ответов: 655
Рейтинг: 18
#6: 2013-05-22 16:48:45 ЛС | профиль | цитата
Пробовал пинг, если не доступен хост то пинг тоже дает задержку 1 сек.

Тут вопрос в другом, почему в моей схеме потоки не уничтожаются? почему они растут и растут если хост недоступен?

У меня руки кривые или это глюк в компоненте HTTP_GET?
карма: 0

0
Ответов: 4630
Рейтинг: 749
#7: 2013-05-22 16:54:44 ЛС | профиль | цитата
Ну если каждый поток ждет таймаута при отсутствии ответа, а ты в это время создаешь другие...
карма: 26

0
Ответов: 655
Рейтинг: 18
#8: 2013-05-22 17:00:44 ЛС | профиль | цитата
Netspirit, я вот это понял уже..*прячет руки за спину*..а как тогда быть?

Если юзаю wait true и один из хостов недоступен то ответ хоста который доступен получу не раньше чем через 10 или более.
А мне нужен опрос раз в 1 сек и без ожидания ответа..
карма: 0

0
Разработчик
Ответов: 26155
Рейтинг: 2127
#9: 2013-05-22 17:12:41 ЛС | профиль | цитата
Gunnman писал(а):
Пробовал пинг, если не доступен хост то пинг тоже дает задержку 1 сек

А если уменьшить таймаут
карма: 22

0
Ответов: 4630
Рейтинг: 749
#10: 2013-05-22 17:13:07 ЛС | профиль | цитата
Снизить до минимума таймаут ожидания ответа и не создавать новый поток раньше этого времени. Как сделать с HTTP_GET - возможно перед повторным запросом обрывать предыдущий по doStop.
карма: 26

0
Ответов: 655
Рейтинг: 18
#11: 2013-05-22 17:14:49 ЛС | профиль | цитата
Всем спасибо!

code_31056.txt

Остановился на таком варианте.
карма: 0

0
файлы: 1code_31056.txt [1.1KB] [199]
11
Сообщение
...
Прикрепленные файлы
(файлы не залиты)