Использование менеджера таймеров. Хотел статью тиснуть, потом как-то отошло в сторону. Хотя на статью может и не потянет.
В конкретное время не получится из-за однопоточности кода и очереди событий, но со средней погрешностью меньше секунды (максимальная ограничена максимальным временем исполнения события кодом).
Тем более таймер он только один.
Надо?
Да, погрешность практически незаметная. Может, в Code Base сразу выложите? На форуме - затеряется, а там - ещё кому понадобится.
stringo: Какие проблемы? Запускайте обычный таймер и анализирйте время. Не подходит время - сразу уходите из OnTimer
И зачем мне бомбить очередь событий ежесекундными Timer, да плюс ещё тратить время на ежесекундные проверки в OnTimer(), если, по сути, требуется запускать OnTimer() с периодичностью раз в сутки (в час, и т.д.), но в определённое время?
Считаю, что гораздо рациональнее и элегантнее была бы вот такая функция с двумя параметрами:
boolEventSetTimer(
int seconds, // количество секунд для OnTimerintзадержка=0// количество секунд задержки запуска первого события Timer
);
Что и предложил в СД.
Дополнение: значение параметра задержка можно легко и однократно вычислить в OnInit().
intзадержка=0// количество секунд задержки запуска первого события Timer
вообще не делать, так как это просто хрень.
Спрошу, как специалиста по хрени. Какова идея этой задержки (intзадержка=0), и для каких целей она (задержка) предлагалась? Как Вы это поняли?
И вторым вопросом хочу уточнить, в чём смысл указания "количества миллисекунд для 1 секунды задержки для OnTimer"? Какую цель пытаетесь достичь? Задерживать, к примеру, каждую секунду в OnTimer на три миллисекунды?
Ну вообще-то по сути я это и предлагал. Только еще обернутое в удобную упаковку.
Раз в секунду это страшный мизер, особенно если пропускать ненужные события.
Как вы и поняли, в данном случае у меня девиз: "Долой любые мизеры, если можно обойтись и без них". Стоит только на уровне терминала разрешить задержку генерирования первого события Timer на выбранное пользователем время. При этом значимость Вашего кода никак не умоляю, тем более, что его попросту не видел.
Использование менеджера таймеров. Хотел статью тиснуть, потом как-то отошло в сторону. Хотя на статью может и не потянет.
В конкретное время не получится из-за однопоточности кода и очереди событий, но со средней погрешностью меньше секунды (максимальная ограничена максимальным временем исполнения события кодом).
Тем более таймер он только один.
Надо?
Да, погрешность практически незаметная. Может, в Code Base сразу выложите? На форуме - затеряется, а там - ещё кому понадобится.
Не до конца готово, сейчас для 5ки занят своим File Unlimited. Скоро закончу.
Фишка не в том -- понадобится или нет. Это единственный нормальный и правильный способ работать с несколькими таймерами.
Не до конца готово, сейчас для 5ки занят своим File Unlimited. Скоро закончу.
Есть ли какой-нибудь способ заставить советник генерировать события Timer в определённое время? Например, в начале последней минуты часа или дня.
Опять же, это отличная замена функции Sleep в индюках, и опять же секунда это многовато.
Тему открыл для обсуждения. Что думаете?
Есть один нюанс. Таймер в индикаторе не работает, если он не присоединен к графику. Поэтому даже секундный таймер часто бесполезен в индикаторах.
Здесь есть решение для контроля событий с частотой меньше секунды. Возможно в связке с GetTickCount() можно сделать таймер.
Какие проблемы? Запускайте обычный таймер и анализирйте время. Не подходит время - сразу уходите из OnTimer
И зачем мне бомбить очередь событий ежесекундными Timer, да плюс ещё тратить время на ежесекундные проверки в OnTimer(), если, по сути, требуется запускать OnTimer() с периодичностью раз в сутки (в час, и т.д.), но в определённое время?
Считаю, что гораздо рациональнее и элегантнее была бы вот такая функция с двумя параметрами:
Что и предложил в СД.
Дополнение: значение параметра задержка можно легко и однократно вычислить в OnInit().
И зачем...
Ну вообще-то по сути я это и предлагал. Только еще обернутое в удобную упаковку.
Раз в секунду это страшный мизер, особенно если пропускать ненужные события.
а это
вообще не делать, так как это просто хрень.
вообще не делать, так как это просто хрень.
Спрошу, как специалиста по хрени. Какова идея этой задержки (int задержка=0), и для каких целей она (задержка) предлагалась? Как Вы это поняли?
И вторым вопросом хочу уточнить, в чём смысл указания "количества миллисекунд для 1 секунды задержки для OnTimer"? Какую цель пытаетесь достичь? Задерживать, к примеру, каждую секунду в OnTimer на три миллисекунды?
Ну вообще-то по сути я это и предлагал. Только еще обернутое в удобную упаковку.
Раз в секунду это страшный мизер, особенно если пропускать ненужные события.