Как я могу использовать таймер в своем консольном приложении? - PullRequest
1 голос
/ 17 апреля 2009

Как я могу использовать таймер в своем консольном приложении? Я хочу, чтобы мое консольное приложение работало в фоновом режиме и делало что-то каждые 10 минут, например.

Как я могу это сделать?

Спасибо

Ответы [ 2 ]

4 голосов
/ 17 апреля 2009

Консольные приложения не обязательно должны быть долгосрочными. При этом, вы можете сделать это. Чтобы консоль не просто выходила, вы должны иметь консольный цикл в Console.ReadLine для ожидания какой-либо строки выхода, такой как «quit».

Чтобы выполнять код каждые 10 минут, вызовите System.Threading.Timer и укажите его на свой метод выполнения с 10-минутным интервалом.

public static void Main(string[] args)
{
    using (new Timer(methodThatExecutesEveryTenMinutes, null, TimeSpan.FromMinutes(10), TimeSpan.FromMinutes(10)))
    {
        while (true)
        {
            if (Console.ReadLine() == "quit")
            {
                break;
            }
        }
    }
}

private static void methodThatExecutesEveryTenMinutes(object state)
{
    // some code that runs every ten minutes
}

EDIT

Мне нравится комментарий Бой на ваш вопрос. Если вам действительно нужно долго работающее приложение, подумайте над тем, чтобы сделать его службой Windows. Существуют некоторые накладные расходы на разработку, но вы получаете гораздо более стабильную платформу для запуска вашего кода.

2 голосов
/ 17 апреля 2009

Вы можете просто использовать планировщик заданий Windows для запуска консольного приложения каждые 10 минут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...