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

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

тормозит таймер !!! [D5, Win95/98, Win2k]


Maksss ©   (2003-01-03 19:44:00) 

проблема такая :
таймер следит за клиентсокетом во время конектинга(приконектился он или нет) интервал 1 время таймаута 6000(тоесть если за 6 секунд не произошло соединение знчит оборвать его и начать с начала) но на самом деле этот интервал длится около 1.5 минуты
уважаемые мастаки подскажите в чём тут проблема?
п.s.
kлиентсокет самопальный и иногда не даёт результата kонект или kонект файлед
к таймеру подключён прогрессбар .


Maksss   (2003-01-09 02:00:00) [1]

>Действительно
уже образумился под 9х
таймер = 1000 интервал 6
под NT быстрее
всем спасибо!!! тема закрыта


Действительно   (2003-01-05 04:18:00) [2]

вопрос, конечно, интересный! Особенно в смысле "интервал 1 время таймаута 6000" - это из первого поста автора. Разумно предположить, что вышеупомянутый так и сделал, т.е. поставил
Interval:=1
а в OnTimer считает количество вызовов сего события.
Неужели он, наивный, действительно думает, что сии события ему будут следовать через 1 мс (а не через ~55мс в W9x или через ~10мс в WinNT?


Maksss   (2003-01-04 05:11:00) [3]

ни каких перегрузок процесора нет (1200 мг) загрузка примерно 5-10%
приоритет тайм критикал ничего не дал проблем либо сокет перехватывает мессаги либо я не знаю.
как хотябы выяснить причину?


TTCustomDelphiMaster   (2003-01-03 22:36:00) [4]

Maksss (03.01.03 20:43)
Таких таймеров полно, сделаны отдельными компонентами. Вы лучше своего клиента выпрямите и все будет работать с обычным таймером.


Morfein   (2003-01-03 22:13:00) [5]

Проц при коннекте нагружается так, что в система перестаёт посылать WM_TIMER?!
Что-то сомнительно... Теперь о точности... человеку же не атомные часы нужно делать... он хочет сделать простой отсчёт времени, причём, используя TTimer ему не придётся делать отдельный поток под него(если клиент не кривой)... а с твоим методом поток нужен.


Mozart   (2003-01-03 21:59:00) [6]

2 Morfein Я так и думал, как раз, когда происходит коннект - очень сильно перегружается проц, особенно, если коннектиться ВинМодем ...
Тот способ, который предложил я не очень хорош, но действет чётко... (с небольшой погрешностью)


Morfein   (2003-01-03 21:32:00) [7]

2 Mozart : тот таймер, что поставляется с делфёй(он же известен под кодовым словом "лажа"), поставляется также и вместе с виндой... более того, основан он на вычислениях, которые делает ядро системы, а не сама делфи(как ты похоже подумал). Чтобы этот таймер начал работать с неправильным интервалом, надо просто сумасшедше переполнить очередь сообщений данного окна... или иметь достаточно медленный процессор...


Mozart   (2003-01-03 20:49:00) [8]

Таймер надо делать самопальный:
т.к. тот, что поставляется с Дельфёй - это лажа полная, которая основывается на вычислениях..... И точным его назвать мягко говоря нельзя. Почему у тебя аж 1.5минуты - наверно проц загружен сильно.....
Короче говоря возьми этот таймер, поставь в нём 1млсек интервал, и всё время проверяй: изменилось ли время...

Var
NachTime:TDateTime;

NachTime:=now {в начале соединения}

Tmer....
begin
if now>=NachTime+EncodeTime(0,0,6,0) then "Disconnect"
end;


Maksss   (2003-01-03 20:43:00) [9]

>TTCustomDelphiMaster
поведай плыз как запустить таймер в отдельном потоке
сокет это аськин компонент приводить его полный код не буду(трафик)


Rouse_   (2003-01-03 20:26:00) [10]

Практически 100% нет или неправильно реализована работа в потоке. Лучше привести код самопального сокета. Их правильная реализация практически в 80% вызывает затруднения у большинства начинающих программистов.

Желаю успехов


TTCustomDelphiMaster   (2003-01-03 20:05:00) [11]

Вероятно пока клиентсокет конектится, он не дает обрабатывать приложению сообщения. Нужно запускать в отдельном потоке клиентсокет или таймер, или взять проверенного клиентсокета


Наверх

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