C#服务无法启动

时间:2009-09-01 07:11:12

标签: c# service version-control

我创建了一个C#Windows服务,但无法启动。当我尝试启动它时,我收到以下消息:

  

本地计算机上的System Usage Monitor服务已启动然后停止。如果没有工作要做,某些服务会自动停止,例如,性能日志和警报服务。

以下是我的OnStart覆盖...

  /// <summary>
  /// OnStart(): Put startup code here
  ///  - Start threads, get inital data, etc.
  /// </summary>
  protected override void OnStart(string[] args)
     {
     base.OnStart(args);

     broadcaster = new UdpBroadcaster(IP_Address, Port);
     itm = new IdleTimeMonitor(1 * 1 * 3000, 1000);
     aam = new ActiveApplicationMonitor(1000);

     itm.IdleTimeExceeded += new IdleTimeExceededDelegate(itm_IdleTimeExceeded);
     itm.IdleTimeReset += new IdleTimeResetDelegate(itm_IdleTimeReset);
     itm.IdleTimeEvaluated += new IdleTimeEvaluatedDelegate(itm_IdleTimeEvaluated);

     aam.StartedUsingApplication += new StartedUsingApplicationDelegate(aam_StartedUsingApplication);
     aam.EndedUsingApplication += new EndedUsingApplicationDelegate(aam_EndedUsingApplication);
     aam.ApplicationEvaluated += new ApplicationEvaluatedDelegate(aam_ApplicationEvaluated);
     }

我需要在该功能结束时阻止什么?为什么我的服务不会开始?

3 个答案:

答案 0 :(得分:3)

你开了一个线程吗?

如果您没有执行某项操作的线程,则应用程序将关闭,因此当启动完成时没有线程(除非您在UdpBrodacaster中启动一个),因此服务将关闭。

编辑:只需声明未发出信号的ManualResetEvent,并在其上调用线程WaitOne()。然后在你的OnStop()信号中发出事件(.Set()),让线程唤醒并退出,从而关闭你的服务。

答案 1 :(得分:2)

查看事件日志,如果您的服务正在启动,那么由于某种原因崩溃将导致应用程序日志中出现异常事件。

答案 2 :(得分:1)

将代码放在try-catch-Block中的OnStart(string [])中,并将异常记录到日志文件中(如果引发了一个)。我认为创建实例存在问题。