Tom*_*mek 3 .net windows service system.management
我修改了一个一直在预先启动的工作Windows服务.添加System.Management引用后,它现在有时不会自动启动.我收到以下错误:
服务无法启动.System.Runtime.InteropServices.COMException(0x80010002):消息过滤器取消了呼叫.(来自HRESULT的异常:0x80010002(RPC_E_CALL_CANCELED))
我在SO上发现了另一篇帖子,有人遇到同样的问题.
为什么我的.Net Windows服务在重启后不会自动启动?
但是,建议的解决方案是在服务依赖的服务启动后启动服务.但是,当我转到我的服务的Dependencies选项卡时,我看到:

我应该只使用将线程置于睡眠状态的变通方法,还是有更正确的方法让这个服务正确启动?这是否发生是因为.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);
}
Run Code Online (Sandbox Code Playgroud)
该服务现在开始,但没有我添加的功能.我是.NET的新手,但是我从网上找到的样本中获取了观察者代码,所以我很确定它是正确的.事件日志显示相同的异常:
无法创建睡眠/恢复观察者呼叫被消息过滤器取消.(来自HRESULT的异常:0x80010002(RPC_E_CALL_CANCELED))
小智 8
我自己有这个问题,显然它只发生在Windows XP上(不是在Vista或Win 7上).要解决此问题,您需要向Windows Management Instrumentation服务添加依赖项.将此依赖项添加到现有服务只需三个简单步骤:
重新启动计算机,您的服务现在应该正确启动.
| 归档时间: |
|
| 查看次数: |
10619 次 |
| 最近记录: |