Это приемлемый способ сделать простой «планировщик» в C #? - PullRequest
1 голос
/ 04 октября 2008

Я делаю простой планировщик с 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 ... однако это кажется излишним.

Ура!

Ответы [ 3 ]

4 голосов
/ 04 октября 2008

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

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

1 голос
/ 21 февраля 2009

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

1 голос
/ 04 октября 2008

Закрыть.

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