Windows服务项目维护另一个可执行文件?

时间:2012-04-10 09:59:12

标签: windows-services nested

我有一个64位的Windows服务项目,现在我需要有一个32位可执行文件,它应该具有相同的Windows服务生命周期。由于64位应用程序域无法加载32位dll,因此我必须在64位Windows服务的OnStart()函数内启动此32位可执行文件。我想知道如何维护这个32位可执行文件的生命周期?基本上我现在所做的是在OnStart()中启动可执行文件并在OnStop()中退出它。

但我现在担心的是,如果这个32位可执行文件(进程)在运行的Windows服务中被杀死或崩溃怎么办?我需要重新启动它。在Windows服务中是否有一个地方或功能,我可以监视其他进程,每当这些进程被杀死时,我可以重新启动它们?或者我可以想到嵌套的Windows服务,但我找不到关于这个主题的任何有用的材料。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我个人会做的是将两个可执行文件配置为Windows服务,这样就可以按照预期的方式使用ServiceController,以确保程序正常运行。您还可以将一项服务设置为另一项服务的先决条件。

我不建议从服务中启动应用程序,因此您将面临相当大的困难......

例如,应用程序在哪个用户下运行?

沿着ServiceController路线走下去,两个部分都是服务肯定是我的首选路线。

从设计的角度来看,应该一直运行并且不需要接口的可执行文件应该是Windows服务,以便操作系统提供正确的调度,并且能够自动重启程序应该有问题。