Это приемлемый способ сделать простой «планировщик» на C#?

Я делаю простой планировщик с C# в .Net. Все, что он делает, это выполняет простой оператор выбора для таблицы в базе данных SQL Server один раз в минуту (это не требует масштабирования или чего-то еще ... база данных не имеет высокой нагрузки). Вот моя предлагаемая реализация:

static void Main(string[] args)
{
    while (true)
    {
        System.Threading.Thread.Sleep(timeout); // timeout is, say, 60000
        CheckTable();
    }
}

Это нормально? Какой способ лучше?

p.s. Кто-то предложил использовать класс Windows Forms Timer ... однако это кажется излишним.

Ваше здоровье!

Этот вопрос связан с: stackoverflow.com/questions/169332

Eric Schoonover 04.10.2008 03:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
1 058
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Хотя это технически законно, вам, вероятно, лучше использовать таймер. Это не намного больше кода, который нужно настраивать, и вы можете позволить среде выполнения позаботиться о создании новых потоков. Если вам когда-нибудь понадобится снова использовать это в другой программе, это также создаст узкое место в производительности, где не будет таймер.

Таймер добавит больше кода, поскольку вам нужно использовать событие триггера таймера.

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

Jonathan Allen 04.10.2008 08:44

Закрывать.

  1. Это будет запускаться каждые (1 минута + время для вызова процедуры). Может, это нормально, а может, и нет. Если это не так, вам нужно вычесть время, которое потребовалось для запуска.
  2. У вас должен быть блок try-catch вокруг него. Вы не хотите, чтобы он полностью умер из-за временной проблемы с базой данных или сети.

Quartz.net - хорошее решение для временных задач. Его довольно легко настроить (хорошее руководство на сайте), и он дает вам гораздо больше гибкости, чем таймеры. CronTrigger действительно мощный и простой в настройке.

Другие вопросы по теме