使用console.readline()

时间:2015-05-11 10:03:23

标签: c# windows-services

现在我有一个C#应用程序,它带有一个24/7的计时器,它经过了30秒并且做了任何事情。

我想将此应用程序设置为Windows服务,以便在后台运行。但服务立即崩溃..

我的代码:

public static System.Timers.Timer _timer = new System.Timers.Timer();

static void Main(string[] args)
{
      _timer.Interval = 30000;
      _timer.Elapsed += timerCallback;
      _timer.AutoReset = true;
      _timer.Start();
}
public static void timerCallback(Object sender, System.Timers.ElapsedEventArgs e)
{
      // Do anything..
}

错误:

  

Windows无法在本地计算机上启动应用程序服务。

     

错误1053:服务未及时响应启动或控制请求

在Windows事件查看器中出现此消息:

  

等待应用程序服务连接时达到超时(30000毫秒)。

但错误出现的时间超过30秒?!

任何运行服务的解决方案? 感谢

迈克尔

1 个答案:

答案 0 :(得分:3)

您可以使用Timer在Windows服务中定期执行逻辑,

protected override void OnStart(string[] args)
{
  base.OnStart(args);

  Timer timer = new Timer();
  timer.Interval = 30*1000;
  timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
  timer.Enabled = true;
  timer.Start();
}
private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
  //put logic here that needs to be executed for every 30sec
}