Fire timer_立即从Windows服务中的OnStart中获取

And*_*ndy 11 c# windows-services timer

我正在使用a System.Timers.Timer,我OnStart在ac #windows服务的方法中有如下代码.

timer = new Timer();
timer.Elapsed += timer_Elapsed;
timer.Enabled = true;
timer.Interval = 3600000;
timer.Start();
Run Code Online (Sandbox Code Playgroud)

这导致代码输入timer_Elapsed从我启动服务后的一小时开始每小时执行一次.有没有办法让它在我启动服务时执行,然后每小时执行一次?

调用的方法timer_Elapsed运行时间太长,无法直接调用它OnStart.

Han*_*ant 20

只需启动一个线程池线程来调用worker函数,就像Timer一样.像这样:

        timer.Elapsed += timer_Elapsed;
        ThreadPool.QueueUserWorkItem((_) => DoWork());
    ...

    void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
        DoWork();
    }

    void DoWork() {
        // etc...
    }
Run Code Online (Sandbox Code Playgroud)