WCF服务应用程序计时器

时间:2011-01-06 11:23:38

标签: c# .net wcf timer wcf-rest

我有一个带有REST服务的WCF服务应用程序项目,它将InstanceContextMode设置为Single。它包含一个计时器,我想用它来定期检查和检查注册。

在有人第一次调用服务之前,计时器才会启动。我想知道的是,在ASP.NET网站中是否存在某种超时,如果没有人暂时使用它或者定时器继续运行,IIS将停止服务。

[ServiceContract]
public interface IRegistrationService
{
    [OperationContract, WebGet...]
    void Register(...);
}

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class RegistrationService : IRegistrationService
{
    private Timer timer;
    public RegistrationService()
    {
        this.timer = new System.Timers.Timer(1000 * 60 * 5);
        this.timer.Elapsed += OnTimerElapsed;
        this.timer.Start();
    }

    private void OnTimerElapsed(object sender, ElapsedEventArgs e)
    {
        // 
    }
}

1 个答案:

答案 0 :(得分:1)

它将继续运行,直到主机应用程序启动并运行。如果您的服务托管在IIS中并且Keep-Alive被禁用,它将被关闭,但是在winforms或Windows服务主机的情况下,对象将保持不变,直到应用程序关闭。要关闭此对象,请使服务Disposable并在timerElapsed时处置该类。