Prof2020 Ответов: 1

Как я могу создать точный период с помощью таймера в winforms


Всем привет,

Моя цель состоит в том, чтобы создать периодическую функцию, в которой время истечения OnTimeEvent между двумя непрерывными временами точно равно интервалу таймера. Тогда я могу использовать интервал времени в качестве времени выборки.

Что я уже пробовал:

Я использую событие истечения таймера в C#, чтобы создать периодическую функцию.
Несмотря на то, что интервал таймера установлен на 10 мс, но когда я измеряю прошедшее время, оно изменяется в диапазоне 12-30 мс, хотя в функции OnTimeEvent есть несколько строк кода (я измеряю его примерно на 1-3 МС).

Как я могу это сделать в C#, должен ли я использовать потоковую задачу? или другой способ.
Пожалуйста, предложите мне решение, которое может решить мою проблему.

Большое вам спасибо!

1 Ответов

Рейтинг:
11

Jochen Arndt

Тиковые таймеры не будут работать на небольших интервалах.

С моей точки зрения, таймер на основе потоков был бы лучшим решением. Вы также можете взглянуть на Мультимедийные Таймеры (Windows)[^].

Но вы должны знать, что Windows-это не операционная система реального времени. Вы не получите постоянных интервалов таймера, особенно когда нагрузка на систему высока или есть много дисков или сетевых передач данных.

Некоторые ссылки CP:
Микросекундный и миллисекундный таймер C# [^]
Мультимедийный таймер для платформы .NET Framework[^]

Поток SO, предоставляющий различные решения:
c# - Самый точный таймер в .NET? - переполнение стека[^]