C # Апериодическая генерация событий - PullRequest
1 голос
/ 20 января 2010

У меня есть список событий «Встречи» в моей базе данных, например, в 15:00 и т. Д., И они имеют нерегулярные интервалы, например, через 15 минут, затем через 30 минут, а затем через 25 минут. Один из способов заключается в том, что я запускаю поток / таймер, который каждую минуту проверяет базу данных, независимо от того, является ли это минутой следующего приема или нет. Мне нужен какой-то другой механизм, с помощью которого я могу вызвать предупреждение / событие / действие в следующий сохраненный момент в моей базе ... как это сделать ...

Ответы [ 3 ]

2 голосов
/ 20 января 2010

Вам стоит взглянуть на Quartz.NET .

Из Особенности Quartz.Net :

Quartz.NET может работать встроенным в другое автономное приложение

1 голос
/ 20 января 2010

Получите дату / время следующей встречи в базе данных, вычтите из этого DateTime.Now, чтобы получить TimeSpan, а затем используйте этот промежуток времени, чтобы запустить таймер один раз, подобно этому:

class MainClass
{
    public static void FireTimerAt(DateTime next)
    {
        TimeSpan waitTime = next - DateTime.Now;

        new Timer(delegate(object s) {
                        Console.WriteLine("{0} : {1}",
                        DateTime.Now.ToString("HH:mm:ss.ffff"), s);
                    }
              , null, waitTime, new TimeSpan(-1));
    }
}
0 голосов
/ 20 января 2010

Класс таймера

Предоставляет механизм для выполнения метод с указанными интервалами. это класс не может быть унаследован.

...