Я хочу использовать таймер, который позволяет мне запускать определенный код через определенные промежутки времени, но таймер Winforms очень неточный. Я установил его на 2 секунды, но он погас целых 48 секунд. Тип кода, который я запускаю, сильно зависит от действия как можно скорее, поэтому 48 секунд слишком поздно делать что-либо.Какой самый точный таймер в .NET?
Также я не хочу, чтобы таймер ходил много циклов процессора, потому что код, который я запускаю, очень прост.
Ух, если он погаснет * 46 секунд слишком поздно *, что-то подозревается .. например, неправильно блокирует поток пользовательского интерфейса. Таймеры WinForms отправляются в соответствующий поток пользовательского интерфейса, где он был создан (обычно для каждого «родного» окна). Если вы хотите, чтобы он загорелся * вокруг * блокирующего потока, вам нужно ввести другой поток или использовать таймер, который использует другой поток (который не блокируется). – user2246674
Спасибо, я в основном использую BackgroundWorker, который вызывает метод Monitor. Таймер вызывает RunWorkerAsync. Это плохо? –
BGW.RunWorkerAsync * не должен * блокировать. Есть ли какой-либо код блокировки в обратном вызове таймера, такой как ожидание на BGW? – user2246674