Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
1-62652
Cranium
2003-01-08 01:09
2003.01.20
Реализация DLL


14-62810
Sancho
2003-01-01 09:48
2003.01.20
С наступившим


4-62921
krammer
2002-12-01 19:32
2003.01.20
Как узнать метку тома какого-либо диска?


4-62899
krammer
2002-12-01 19:37
2003.01.20
Как узнать дату создания, изменения файла?


1-62612
HelpMe
2003-01-09 13:24
2003.01.20
Как это сделать?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский