Уменьшение задержки между вызовами System.Timers.TImer ⇐ C#
-
Гость
Уменьшение задержки между вызовами System.Timers.TImer
Я храню данные OHLC в режиме реального времени в файле CSV, для чего использую System.Timers.Timer для запуска каждые 60 секунд. Таймер примерно такой:
System.Timers.Timer timer = new System.Timers.Timer(); таймер.Интервал = 60000; таймер.Автосброс = правда; таймер.Включено = правда; timer.Elapsed += TimeElapsed; таймер.Старт(); Private void TimeElapsed(отправитель объекта, System.Timers.Timer.ElapsedEventArgs e) { // Выполняем здесь некоторую обработку } Я использовал регистратор Serilog для регистрации выходных данных каждый раз, когда срабатывает это событие, и заметил одну вещь: таймер добавляет небольшую задержку (несколько миллисекунд после каждого вызова), а затем, поскольку код выполняется в течение длительного времени время сейчас около 2 дней, которые накапливаются в миллисекундах и теперь составляют несколько секунд. Первая запись была 2023-09-20 21:17:00.363, а теперь, поскольку она вызывается каждую минуту, теперь вызов происходит каждую минуту в 2023-09-22 13:46:27.504. Обратите внимание на добавление 27 секунд с течением времени. Я не хочу этого. Итак, есть ли способ сопоставить таймер с часами Windows? Или вы можете предложить лучший подход к этому? Обратите внимание: я хочу, чтобы он сохранялся в CSV-файле только во время @HH:MM:00.
Я храню данные OHLC в режиме реального времени в файле CSV, для чего использую System.Timers.Timer для запуска каждые 60 секунд. Таймер примерно такой:
System.Timers.Timer timer = new System.Timers.Timer(); таймер.Интервал = 60000; таймер.Автосброс = правда; таймер.Включено = правда; timer.Elapsed += TimeElapsed; таймер.Старт(); Private void TimeElapsed(отправитель объекта, System.Timers.Timer.ElapsedEventArgs e) { // Выполняем здесь некоторую обработку } Я использовал регистратор Serilog для регистрации выходных данных каждый раз, когда срабатывает это событие, и заметил одну вещь: таймер добавляет небольшую задержку (несколько миллисекунд после каждого вызова), а затем, поскольку код выполняется в течение длительного времени время сейчас около 2 дней, которые накапливаются в миллисекундах и теперь составляют несколько секунд. Первая запись была 2023-09-20 21:17:00.363, а теперь, поскольку она вызывается каждую минуту, теперь вызов происходит каждую минуту в 2023-09-22 13:46:27.504. Обратите внимание на добавление 27 секунд с течением времени. Я не хочу этого. Итак, есть ли способ сопоставить таймер с часами Windows? Или вы можете предложить лучший подход к этому? Обратите внимание: я хочу, чтобы он сохранялся в CSV-файле только во время @HH:MM:00.
Мобильная версия