|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
30.12.2006, 19:09 | #21 | |
Пользователь
Регистрация: 19.12.2006
Сообщений: 91
|
Цитата:
|
|
30.12.2006, 19:44 | #22 |
НачПрог
Регистрация: 23.12.2006
Сообщений: 7
|
Пасиб! решил зделать 3 таймер. Там полно в нем чего надо писать, чтоб не копировать одно и тоже в 2 таймера
program qwe;
|
30.12.2006, 20:19 | #23 |
Пользователь
Регистрация: 19.12.2006
Сообщений: 91
|
|
11.01.2007, 12:55 | #24 |
Пользователь
Регистрация: 11.01.2007
Сообщений: 12
|
А не проще ли было обойтись 1 таймером?
Просто засечь моменты начала каждого события, и каждый такт обновлять состояния (с проверкой того, что отсчет уже запущен). |
13.01.2007, 13:54 | #25 |
Регистрация: 12.01.2007
Сообщений: 6
|
Ууу, б**, что я сам не додумался? Можно ведь кучу таймеров навставлять и разделить обязанности. Так и работать быстрей должно, нежели все в одном. Правильно думаю?
Последний раз редактировалось Mihail; 13.01.2007 в 13:56. Причина: опечатка |
13.01.2007, 14:09 | #26 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
Таймер сам по себе тормозит систему... Думаю можно всё в одном, чем в нескольких.
Вообще за место таймера можно и пустое событие использовать в цикле. Если надо напишу. |
13.01.2007, 14:13 | #27 |
Регистрация: 12.01.2007
Сообщений: 6
|
Пустое событие?? Нука пиши.
|
13.01.2007, 14:21 | #28 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
Код:
Лично я нашёл применение этому в трояне: через 500мс проверяет наличие сообщений от "командного центра" |
13.01.2007, 16:03 | #29 |
Владимир М.
Участник клуба
Регистрация: 30.10.2006
Сообщений: 1,289
|
Исходный код компонента TTimer находится в файле ExtCtrls.pas. Он невелик, очень прост и может быть рекомендован как иллюстрация на тему "как писать простые компоненты".
Основой класса является функция UpdateTimer. Она вызывается при каждом заметном событии - например, при изменении свойства Enabled - и настраивает системный таймер так, чтобы он работал (или не работал) в соответствии с изменившимися настройками. Вот ее текст: Код:
Основная особенность созданных таким способом таймеров - работа через очередь сообщений Windows. Таймерное событие происходит тогда и только тогда, когда приложение обрабатывает очередь сообщений; для приложение срабатывание таймера выглядит как приход сообщения WM_TIMER. Таким образом, точность и равномерность таймеров весьма условны - если, скажем, приложение выполнит SQL-запрос (что на пять секунд займет основной поток), таймер, настроенный срабатывать десять раз в секунду, в течение этого времени не сработает ни разу. По этой же причине таймер не сработает во время паузы, достигнутой с помощью функции Sleep. По этой же причине таймер не сработает во время ожидания, организованного с помощью функции WaitForSingleObject. И так далее в том же духе. С другой стороны, таймер вполне может сработать при вызове подпрограммы Application.ProcessMessages, при открытии модальной формы (внутри метода ShowModal) и так далее - везде, где происходит обработка очереди сообщений. Существенный момент - "несработавшие вызовы таймера" не накапливаются в системе. В случае, если приложение несколько секунд не обрабатывало очередь сообщений - таймер, настроенный срабатывать десять раз в секунду, сработает один раз при следующем обращении к очереди, и в следующий раз - не раньше, чем через 1/10 секунды (но возможно - куда позже, нежели через 1/10). Можно заметить, что в подпрограмме UpdateTimer предусмотрен вариант несоздания таймера из-за недостатка ресурсов. В связи с чем возникает вопрос: сколько таймеров может использовать приложение? Простой эксперимент показывает следующее: в случае, если программа создает 10.000 таймеров, система (Win2000) ощутимо напрягается, но таймеры создает. Таким образом, можно считать, что реально достижимых ограничений на количество таймеров сейчас нет. При повторении этого эксперимента следует учесть приведенный выше код: функция UpdateTimer создает только те таймеры, которые будут реально работать - иначе говоря, для корректного эксперимента необходимо установить свойства Enabled, Interval и OnTimer.
Берегите друг друга!
|
13.01.2007, 16:36 | #30 |
Регистрация: 12.01.2007
Сообщений: 6
|
Сейчас наворочу чего нибудь. Спасибо.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Таймер в С# | kommunist | Общие вопросы .NET | 3 | 02.06.2008 12:11 |
таймер | Романнн | Общие вопросы Delphi | 19 | 19.12.2007 15:33 |
таймер | darkcoder | Общие вопросы Delphi | 5 | 06.12.2007 06:14 |
Таймер | Stanislav | Общие вопросы Delphi | 3 | 26.11.2007 06:52 |
Таймер | Blondinko | Помощь студентам | 6 | 23.10.2007 10:35 |