2010-03-08 112 views
3

我已经修改了一直在事先启动的工作Windows服务。添加System.Management引用后,它现在有时不会自动启动。我得到以下错误:为什么我的.NET Windows服务有时不会自动启动?

Service cannot be started. System.Runtime.InteropServices.COMException (0x80010002): Call was canceled by the message filter. (Exception from HRESULT: 0x80010002 (RPC_E_CALL_CANCELED))

我发现另一个帖子在SO上与某人有同样的问题。

Why won't my .Net Windows service start automatically after a reboot?

然而,所提出的解决办法是有它取决于已经启动的服务后,服务启动。然而,当我去依赖标签为我服务,我看到:

alt text

如果我只是用把线程睡眠的变通办法,还是有越来越这项服务的更合适的方式正确启动?发生这种情况是因为.NET在我的服务启动之前还没有启动?

感谢,

托梅克

编辑:我添加了一个try-catch语句来捕获异常。下面是我添加到我服务的OnStart()方法(这是异常被抛出哪里)代码

 try 
     { 
      _watcher = new ManagementEventWatcher(query); 
      _watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived); 
      _watcher.Start(); 
     } 
     catch (Exception ex) 
     { 
      EventLog.WriteEntry("Could not create Sleep/Resume watcher" + ex.Message); 
     } 

的服务不从现在做起,但没有说我已经加入的功能。我是.NET新手,但是我从网上找到的示例中看到了守护程序代码,所以我非常肯定它是正确的。事件日志显示相同的异常:

Could not create Sleep/Resume watcher Call was canceled by the message filter. (Exception from HRESULT: 0x80010002 (RPC_E_CALL_CANCELED))

+0

您也可以尝试在ServerFault.com上发布您的问题 – DOK 2010-03-08 20:50:28

+0

由于您现在使用WMI,因此您应该等待Windows Management Instrumentation Service启动。尝试在安装时将其添加到相关服务。 – 2010-03-09 02:39:18

回答

0

最后我用了Thread.Sleep(10000)之前,我(之前try语句)

这是一种变通方法的创建ManagementEventWatcher,但它确实解决问题。

1

的问题是不是与服务本身,它是新组件您添加的引用抛出未处理的异常(呼叫被邮件过滤器取消)。解决问题与您添加任何代码,和/该错误消息或将在更好的错误处理,以便在该组件的错误不会泡到顶部,并导致服务停止:-)

+0

@Joel Martinez我已经添加了try-catch,但得到相同的异常(请参阅我的编辑) – Tomek 2010-03-08 21:53:24

0

如果你依赖于另一个服务,我们sc.exe将您的服务配置为在依赖关系之后启动。这不能通过服务小程序完成。

+0

如何才能找出我的服务依赖于服务小程序以外的哪些服务? – Tomek 2010-03-08 21:29:40

8

我自己有这个问题,显然它只发生在Windows XP(不在Vista或Win 7上)。 要解决此问题,您需要向Windows Management Instrumentation服务添加依赖项。 加入这个依赖于你现有的服务三个简单的步骤做:

  1. 打开命令提示符(Windows + R - > CMD - >输入)
  2. 类型:sc配置 “NAME_OF_YOUR_SERVICE” 取决于= Winmgmt的
  3. 按回车键,你会看到:[SC] ChangeServiceConfig成功

重新启动您的计算机和服务现在应该正常启动。

+2

这是正确答案!您也可以将依赖关系添加到服务安装程序。 – hofmeister 2013-08-26 11:18:09

相关问题