gpt4 book ai didi

.net - 为什么我的 .NET Windows 服务有时不会自动启动?

转载 作者:可可西里 更新时间:2023-11-01 14:42:17 25 4
gpt4 key购买 nike

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

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))

最佳答案

我自己也遇到过这个问题,显然它只发生在 Windows XP 上(而不是在 Vista 或 Win 7 上)。要解决此问题,您需要向 Windows Management Instrumentation 服务添加依赖项。只需三个简单的步骤即可将此依赖项添加到您现有的服务中:

  1. 打开命令提示符(Windows+R -> cmd -> 回车)
  2. 类型:sc config "NAME_OF_YOUR_SERVICE"depend= winmgmt
  3. 按回车键,您应该会看到:[SC] ChangeServiceConfig SUCCESS

重新启动您的计算机,您的服务现在应该可以正确启动。

关于.net - 为什么我的 .NET Windows 服务有时不会自动启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2404569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com