【发布时间】:2011-05-10 08:14:11
【问题描述】:
我编写了一个小型 Windows 服务,希望每天在我的 Windows Server 2008 上运行。该服务是用 C# 编写的。
- 代码在正常情况下运行良好 Windows 窗体。
- 当我从“服务管理”窗口 (services.msc) 启动和停止该服务时,该服务的工作方式应有尽有。
但是在命令行上运行它时:
net start Service1
我得到以下信息:
The Service1 service is starting........ The Service1 service could not be started.
The service did not report an error.
More help is available by typing NET HELP:SG 3534.
但奇怪的是,该服务仍在运行,在“服务”屏幕中,我仍然看到它正在启动,直到它完全启动。当我之后尝试停止服务时,我得到:
The service could not be controlled in its present state.
More help is available by typing NET HELPMSG 2189
然后服务停止。有没有办法解决这个问题?我已经成功地调试了服务,没有任何问题,代码有效。但是在调试过程中,命令控制台上仍然会发生同样的事情,而我仍然能够进一步调试。
这就像 onStart() 方法有某种超时..我不知道..我对 Windows 服务相当陌生(这是我的第一个)。我确实在 onStart() 方法中编写了所有代码,也许这不是最好的主意,但我不知道在哪里输入它。
如果有人可以提供帮助,我将不胜感激。
【问题讨论】:
-
也许您在某处返回了错误的错误代码
-
Johann Blais 在正确的道路上帮助了我。在用正确的术语进行一些研究后,我也发现了这一点:“问题是 OnStart 和 OnStop 方法必须在 1 分钟内将控制权返回给服务控制管理器,以便服务控制管理器识别服务正在运行或已经停了。”我的代码运行时间超过一分钟。
标签: c# command-line service windows-services