Fire timer_elapsed immediately from OnStart in windows service

前端 未结 4 1401
情话喂你
情话喂你 2021-02-13 20:33

I\'m using a System.Timers.Timer and I\'ve got code like the following in my OnStart method in a c# windows service.

timer = new Timer(         


        
4条回答
  •  盖世英雄少女心
    2021-02-13 21:30

    If you want your Timer to be fired immediately then you could simply just initialize the Timer object without a specified interval (it will default to 100ms which is almost immediately :P), then set the interval within the called function to whatever you like. Here is an example of what I use in my Windows Service:

    private static Timer _timer;
    
    protected override void OnStart(string[] args)
    {
        _timer = new Timer(); //This will set the default interval
        _timer.AutoReset = false;
        _timer.Elapsed = OnTimer;
        _timer.Start();
    }
    
    private void OnTimer(object sender, ElapsedEventArgs args)
    {
        //Do some work here
        _timer.Stop();
        _timer.Interval = 3600000; //Set your new interval here
        _timer.Start();
    }
    

提交回复
热议问题