C#在高效的Windows服务中安排重复任务的最佳方法

时间:2016-09-19 10:59:35

标签: c# .net multithreading wcf

我在.Net Framework 4.0中编写了一个Windows服务,我需要在里面安排一个重复的任务。新任务只能在前一个任务完成后运行,因此没有并行任务... 我的所有任务都出现在同一个对象(WCF通道工厂)上。 任务大约需要2秒钟才能完成,可能每2秒或每小时安排一次。 我的约束是让这个Windows服务尽可能在内存和处理器上使用不可见/光,并使用处理器...

我已经找到了这两种方式:

  • System.Timers.TimerAutoreset使用false =>我是 实现ElapsedEventHandler并传递我的共享对象(WCF 渠道工厂)
  • 使用永无止境的循环:不确定mem / proc的使用情况 那状态,但没有线程方面可以照顾。

有什么建议吗?

谢谢,祝你有愉快的一天!

1 个答案:

答案 0 :(得分:2)

对我来说很顺利:我启动计时器一次,然后在Tick方法中我将安排下一个Tick通话。像这样:

public void SetTimer()
{   
    // this is System.Threading.Timer, ofcource
    _timer = new Timer(Tick, null, _interval, Timeout.Infinite);
}

private void Tick(object state)
{
    try
    {
        // do your stuff
    }   
    finally
    {
        _timer?.Change(_interval, Timeout.Infinite);
    }
}

// dont forget to dispose your timer.
相关问题