我正在开发Windows服务。它工作正常。当我试图从services.msc
停止服务时,它会抛出以下错误:
Windows无法在本地计算机上停止xxx服务。 该服务未返回错误。这可能是内部Windows错误或内部服务错误。 如果问题仍然存在,请与系统管理员联系。
如果我再次尝试停止它,则会花费大量时间然后抛出错误,如下所示:
Windows无法在本地计算机上停止xxx服务。 错误1061:此时服务无法接受控制消息。
此时,服务已停止。但是,如果我尝试重新安装该服务,则会引发另一个错误:
Windows无法在本地计算机上停止xxx服务 错误1001:指定的服务被标记为删除。
关闭services.msc
后,它让我重新安装服务,然后事情开始正常工作。
在OnStop()
中,我正在做一些冗长的操作,需要时间才能完成。
知道如何让整个过程顺利进行吗?
- 编辑 -
这就是我的OnStop
方法:
protected override void OnStop()
{
base.OnStop();
//Some lengthy operation
}
答案 0 :(得分:14)
Windows服务在onstart和onstop事件中具有默认超时。通常,如果您在任何这些事件中执行耗时的操作 启动新线程并让操作在后台执行。
通常,Windows服务中的OnStart和OnStop事件用于启动进程,耗时的进程将在子线程中执行它。
希望这能解决你的问题..
答案 1 :(得分:2)
有一个注册表项可以控制窗口在放弃之前关闭服务的时间:http://support.microsoft.com/kb/146092
平凡地说,增加这段时间可以解决问题,假设您的服务在长时间操作后实际上正在关闭。