Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.20;
Скачать: CL | DM;

Вниз

тормозит таймер !!!   Найти похожие ветки 

 
Maksss   (2003-01-03 19:44) [0]

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


 
TTCustomDelphiMaster ©   (2003-01-03 20:05) [1]

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


 
Rouse_ ©   (2003-01-03 20:26) [2]

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

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


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

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


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

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

Var
NachTime:TDateTime;

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

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


 
Morfein ©   (2003-01-03 21:32) [5]

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


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

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


 
Morfein ©   (2003-01-03 22:13) [7]

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


 
TTCustomDelphiMaster ©   (2003-01-03 22:36) [8]

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


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

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


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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2003.01.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
1-62638
Sergey-ZZZ
2003-01-09 15:53
2003.01.20
NumLock


3-62362
Danas
2002-12-24 16:43
2003.01.20
Btrieve and Delphi


1-62502
Fors
2003-01-10 13:51
2003.01.20
что не так в этой задаче


14-62826
Stud_ent
2003-01-01 23:31
2003.01.20
Нужна помощь


14-62778
Мазут Береговой
2002-12-30 05:38
2003.01.20
Интересная мысль No 3