Prevent multiple instance of a service - best approach?

后端 未结 6 1680
醉话见心
醉话见心 2020-12-05 05:31

So what do you think is the best way to prevent multiple threads of a C# Windows service running simultaneously (the service is using a timer with the OnE

6条回答
  •  隐瞒了意图╮
    2020-12-05 05:37

    Make your timer a one-shot, and re-initialize it in the elapsed event handler. For example, if you're using System.Timers.Timer, you'd initialize it like this:

    myTimer.Elapsed = timer1Elapsed;
    myTimer.Interval = 1000; // every second
    myTimer.AutoReset = false; // makes it fire only once
    myTimer.Enabled = true;
    

    And your elapsed event handler:

    void timerElapsed(object source, ElapsedEventArgs e)
    {
        // do whatever needs to be done
        myTimer.Start(); // re-enables the timer
    }
    

    The drawback to this is that the timer doesn't fire on one second intervals. Rather, it fires one second after the last tick's processing finishes.

提交回复
热议问题