我需要重新启动我正在开发的服务。我不习惯要求服务经理在出错的情况下这样做。我需要在我的代码中这样做。有可能解决我的问题吗?
的原因我需要它:
我需要重新启动,以防出现某些特殊的异常。我可以在出现异常的情况下关闭我的应用程序,并将服务管理器设置为恢复服务。
据我所理解,服务管理器将在两种情况下重新启动服务--在事件查看器中生成错误和服务被弯曲时。
如果事件查看器出现错误,这对我的if服务是不好的,因为我的应用程序在事件查看器中生成了一些我仍然无法理解的错误。这些错误对服务质量没有影响。我需要重新启动,以防服务停止,如果我需要处理异常情况。
发布于 2012-08-20 10:18:46
您只需在错误标志上重新启动服务即可。什么是错误?阅读:http://msdn.microsoft.com/en-us/library/ms685939.aspx,您退出您的应用程序和报告清洁退出到操作系统。如果没有,则假设您已崩溃,无法进行正确的报告。无论是否正确报告服务应用程序,都应由您来决定。http://msdn.microsoft.com/en-us/library/ms685996.aspx
下面是第一个版本的答案,假设主题启动需要“热升级”功能。它仍然可能被使用,但在崩溃时自动重启是多余的。
你做两件事。
一种是工作者,另一种是监控程序和重启动程序,比如过时的Interbase/Firebird方案,比如一些特洛伊木马,等等。
或者一个是工作人员,另一个是后备员工,静默地跟踪更改,如果第一次崩溃,它将扮演主导角色并生成下一个后备工作人员。影子数据库服务器就是这样做的。
后者只需要在崩溃和恢复工作之间有接近零的延迟,否则代价太高。前者是脆弱的方案,被标准的win32服务属性淘汰。
发布于 2012-08-21 18:15:55
将服务的工作转移到线程中。然后,服务可以在需要时简单地终止和重新创建线程,而不必重新启动服务本身。
发布于 2012-08-20 10:04:50
Windows已经提供了“重新启动服务”。在你的服务中也不必这样做。
https://stackoverflow.com/questions/12035550
复制相似问题