Таймер в методе OnStart в службе Windows - PullRequest
0 голосов
/ 16 ноября 2018

Я создал службу Windows в C #, создал системный таймер и запустил его методом OnStart ().Когда я загружаю сервис в ПК, возникает проблема.Я сделал отладку, поэтому проблема в том, что когда метод OnStart запускает таймер, весь код любого метода (метод DBinsert) в таймере продолжает бесконечность (строка 1, строка 2, .... строка 15, затем переходите к строке 1 ... снова) Как можноЯ это решаю?

Timer tmr = new Timer();

protected override void OnStart(string[] args)
{
    tmr.Interval = 5000;
    tmr.Elapsed += tmr_Elapsed;
    tmr.Start();
}

private void tmr_Elapsed(object sender, ElapsedEventArgs e)
{
    DBconnection.DBinsert();
}

1 Ответ

0 голосов
/ 16 ноября 2018

Я опубликую это как ответ, чтобы я мог опубликовать немного кода. Если вы не знакомы, это то, что я имел в виду, когда упомянул условную компиляцию в своем комментарии:

    private void tmr_Elapsed(object sender, ElapsedEventArgs e)
    {
#if DEBUG
        tmr.Stop();
#endif
        DBconnection.DBinsert();
#if DEBUG
        tmr.Start();
#endif
    }

Обратите внимание, что это все еще останавливается и запускает Timer, даже если вы не отлаживаете этот обработчик событий, так что это означает, что ваш интервал будет немного больше 5 секунд, но я сомневаюсь, что это слишком большая проблема. Вы всегда можете установить Interval из Timer на немного меньшее значение в Debug, чтобы компенсировать, если вам нужно.

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