TGViewer
Библиотека шарписта | C#, F#, .NET, ASP.NET Библиотека шарписта | C#, F#, .NET, ASP.NET @csharpproglib · 21.6K subscribers
Post #7294 1.11K
⚙️ PeriodicTimer: следующий тик не обязан ждать конца работы

Нужно регулярно обновлять данные в фоне, но не хочется запускать второй обход поверх первого? С PeriodicTimer можно построить один последовательный async-цикл.

using var timer = new PeriodicTimer(
TimeSpan.FromSeconds(10));

while (await timer.WaitForNextTickAsync(stoppingToken))
{
await RefreshAsync(stoppingToken);
}


Пока RefreshAsync не закончится, следующая итерация этого цикла не начнётся. Но это не то же самое, что «десять секунд отдыха после каждой работы».

⏬ Что случится с пропущенными тиками?

Таймер объединяет несколько тиков, пришедших между ожиданиями, в один. Если обновление заняло 25 секунд, не появится очередь из всех пропущенных запусков. Следующее ожидание может завершиться сразу.

У таймера должен быть один потребитель. Отмена ожидания через токен приводит к OperationCanceledException — её нужно учитывать при остановке фонового сервиса.

🔗 Источник

📍 Навигация: Вакансии • Задачи • Собесы

🐸 Библиотека шарписта

#il_люминатор
  • 👍 1
More from @csharpproglib
  1. Oct 16, 2026⚙️ Task.WhenAll не ограничивает число запросов Если передать в Task.WhenAll тысячу задач о…
  2. Oct 15, 2026🧑‍💻 Какие навыки помогают вам в разработке в 2026 году? Что вы чаще используете в работе…
  3. Oct 15, 2026🧩 Mapperly: маппинг DTO, который можно открыть и прочитать Вручную перекладывать двадцать…
  4. Oct 14, 2026Post #7290
  5. Oct 14, 2026Общая папка для работы Claude Code и Codex Луи-Франсуа Бушар собрал заметки, инструкции-ск…
  6. Oct 14, 2026🧠 Кеш пустой, а в базу одновременно пришли сто запросов Популярная запись исчезла из кеша…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →