WCF服务器中的计时器每次都会重复

时间:2017-01-02 15:26:38

标签: c# wcf azure timer

我有一个我在Windows Azure中托管的WCF服务。我在这个服务器上使用一个Timer,服务器需要每10秒更新一次。服务器在ASP应用程序和WPF应用程序中实现。

当我在构造函数中初始化Timer时,如下所示:

public Service1()
{
    System.Timers.Timer timer = new System.Timers.Timer();
    timer.Elapsed += new System.Timers.ElapsedEventHandler(WCFService_Elapsed);
    timer.Interval = 10000;
    timer.Enabled = true;
    timer.Start();
}

计时器将启动,但如果我重新启动应用程序,计时器将运行得更快(因为它运行的是计时器的副本)。在contructor上面声明计时器,因为私有属性不起作用。

我已经尝试在ServiceBase类的OnStart方法中使用它:

private System.Timers.Timer timer;
    protected override void OnStart(string[] args)
    {
        timer = new System.Timers.Timer();
        timer.Elapsed += new System.Timers.ElapsedEventHandler(WCFService_Elapsed);
        timer.Interval = 10000;
        timer.Enabled = true;
        timer.Start();
    }

但是这从未被调用过......我也测试了一个静态计时器,但这也没有开始。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

Timer继承IDisposable,这意味着可以并且应该处理Timer。

我很惊讶在关闭您的服务时计时器仍在运行,但您应该在停止服务时处理以解决问题。

因此,在您的OnStop方法中,您应该致电:

timer.Stop();
timer.Dispose();