Windowservice错误

我有包含这么多项目和窗口服务的解决方案。 我在windowservice的应用程序端修改了编码,之后我将关于该服务的exe(F:\ Components \ Console \ Bin \ service.exe)复制到安装路径(C:\ Program Files \ syscon \ Monitor \ service) .exe)从’services.msc’停止windowservice后。现在我在调试时得到服务的价值,这是以前没有得到的。但是现在当我从’services.msc’启动服务时,我收到此错误“可能不能在本地计算机上启动运行的sentinel windows资源监视器服务。错误1053:服务没有及时响应启动或控制请求“可以告诉我一个解决方案

我们在工作期间创建了许多服务,并且我发现一种非常有用的调试方法如下:

使您的服务成为“双应用程序”,可以作为服务运行,也可以作为普通的Windows窗体应用程序运行,由某些命令行参数控制。 我将“/ gui”传递给我的服务。

void Main(string[] args)我检查参数:

如果它丢失了,我执行代码来实例化服务(Visual Studio生成的代码)。

如果它存在,我运行代码来创建一个普通的Windows窗体应用程序,其中主窗体实例化服务并相应地调用OnStartOnStop (由于OnStartOnStop可见性,您将不得不创建包装器方法)。

当然,您必须手动添加对Windows窗体程序集的引用并自行添加类似Application.Run(...)代码,但调试function会大大提高,而无需经历“停止服务,复制文件,启动服务”的麻烦,失败“ – 例程。

最有可能的是,你的OnStart代码中存在一个错误,它使实例退出该例程并且服务管理器一直在等待。

编辑
以下是根据参数创建service / gui的方式的代码示例:

 static void Main(string[] args) { if (args.Length > 0 && args[0].Equals("/gui")) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new FrmGui()); } else { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new SampleService() }; ServiceBase.Run(ServicesToRun); } }