我已经在Visual Studio社区2015年在我的Windows 10的笔记本电脑中创建一个Windows服务项目(从Windows 7升级,全面更新),但我一直无法人工成功启动我的服务,一旦服务开始启动,我无法强制终止服务。当我尝试启动通过服务控制台(Services.msc)中我的服务,我得到了以下行为:无法手动启动C#Windows服务
- A“服务控制”对话框会弹出一个进度条。
- 进度条在90秒内缓慢填充。
- 当进度条已满时,我收到错误1053.
- 服务的状态更改为并且在“开始”(开始待定)时保持无限。
- 除了强制重启之外,服务不能以任何方式停止。
我已经明白,错误1053是30秒后无法启动的服务的结果。但是,我的服务不可能花费超过30秒的时间启动。我OnStart
,OnStop
和OnTimer
方法目前如下:
protected override void OnStart(string[] args)
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 10000;
timer.Elapsed += new System.Timers.ElapsedEventHandler(this.OnTimer);
timer.Start();
}
protected override void OnStop()
{
}
public void OnTimer(object sender, System.Timers.ElapsedEventArgs args)
{
}
而且我Main
方法是这样的:
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new MyNewService()
};
ServiceBase.Run(ServicesToRun);
}
奇怪的是,如果我的服务的启动方式设置为“自动”,则服务确实会在下一次Windows重新启动时自行启动。当它自动启动时,我可以手动停止服务(这是唯一一次手动停止)。但是,手动成功停止后,我仍然无法手动重新启动它。尝试这样做产生完全相同的行为没有错误(通过installutil)前文所述,在错误再次导致1053
我的服务安装,并没有错误,我可以卸载。但是,如果尝试在服务停留在“正在启动”(启动待定)模式时尝试卸载我的服务(通过installutil/u),服务不会停止,仍然为“正在启动”,并且启动模式将切换为“已禁用”。只有在重新启动后才能完全删除服务。
我的问题: 为什么我的服务在Windows启动时自动启动,但不能通过任何其他手动方法启动? (我需要它自动启动,但也可以手动启动和停止它。)
谢谢您的时间和专业知识。
显示OnStop方法 – BWA
OnStop方法添加到原始文章,它是空的 – Chase
你可以检查事件查看器,看看是否有任何错误被捕获? – Martin