C# 4.0 在VS 2010中将System.Threading.Timer添加到windows服务

C# 4.0 在VS 2010中将System.Threading.Timer添加到windows服务,c#-4.0,windows-services,timer,C# 4.0,Windows Services,Timer,这是我第一次使用windows服务,我正在边走边学习。 我正在使用VS2010、Windows7创建一个带有计时器的Windows服务。我也用谷歌搜索和浏览过这个网站,但我仍然不知道在windows服务组件中为计时器编码的位置 我在service1.cs类中有一个OnStart方法和OnStop方法 我应该在哪里编写计时器代码来执行该功能(而不是启动windows服务)?使用计划任务来运行小型控制台应用程序或类似程序,而不是处理windows服务可能带来的各种细微差别,会更容易些吗 如果没有,您

这是我第一次使用windows服务,我正在边走边学习。 我正在使用VS2010、Windows7创建一个带有计时器的Windows服务。我也用谷歌搜索和浏览过这个网站,但我仍然不知道在windows服务组件中为计时器编码的位置

我在service1.cs类中有一个OnStart方法和OnStop方法

我应该在哪里编写计时器代码来执行该功能(而不是启动windows服务)?

使用计划任务来运行小型控制台应用程序或类似程序,而不是处理windows服务可能带来的各种细微差别,会更容易些吗

如果没有,您可能需要阅读一篇关于编写windows服务(如或)的普通文章。一旦看到正常服务(不使用计时器的服务)如何运行,就应该知道在哪里添加计时器代码


希望能有所帮助?

下面是一个如何做到这一点的示例。它每10秒向应用程序日志写入一条消息(如事件查看器中所示),直到服务停止。在您的例子中,将周期性逻辑放在OneFassedEvent()方法中

我在这里有几个详细的答案,这可能对您开始使用Windows服务有所帮助


您实际上是在谈论启动服务还是定期执行服务中的某些功能?定期执行服务中的功能非常感谢。这就是我所需要的。运行数小时(我的情况是9小时)的计划任务似乎被打断了。不确定是代码中有错误还是任务计划程序有问题。但这一选择将有所帮助。我工作的地方的Ops对or都很好。但它们可能是一个决定性因素。@TamusJRoyce 4岁的线程;如果您有任何问题(或者更好,在twitter上使用相同的用户名),请告诉我。祝你好运
private System.Timers.Timer _timer = new System.Timers.Timer();

protected override void OnStart(string[] args)
{
    _timer.AutoReset = true;
    _timer.Interval  = 10000;  // 10 seconds
    _timer.Elapsed  += OnElapsedEvent;
    _timer.Start();
}

protected override void OnStop()
{
    _timer.Stop();
}

private void OnElapsedEvent(object sender, ElapsedEventArgs e)
{
    // Write an entry to the Application log in the Event Viewer.
    EventLog.WriteEntry("The service timer's Elapsed event was triggered.");
}