我有一个64位的Windows服务项目,现在我需要一个32位可执行文件,它应该具有与Windows服务相同的生命周期。由于64位应用程序域无法加载32位DLL,因此我必须在64位Windows服务的OnStart()函数内启动此32位可执行文件。我想知道我应该如何保持这个32位可执行文件的生命周期?基本上我现在所做的是在OnStart()中启动可执行文件并在OnStop()中退出它。Windows服务项目维护另一个可执行文件?
但我现在担心的是,如果这32位可执行文件(进程)在运行Windows服务的过程中遇害或崩溃,该怎么办?我需要重新启动它。在Windows服务中是否有地方或功能,我可以在其中监视其他进程,并且每当这些进程被杀死时,我可以重新启动它们?或者我可以考虑嵌套的Windows服务,但是我找不到有关此主题的任何有用材料。
感谢您的帮助!
所以你有一个服务,它依赖于一个应用程序?这是不好的设计......如果没有用户登录会怎么样? – KingCronus 2012-04-10 10:00:53
如果它们都是服务,则可以使用ServiceController来检查另一个服务的状态,甚至可以启动/停止/重新启动它。这是因为所有的服务都将充当行政专家。 – KingCronus 2012-04-10 10:01:46
@AdamKing感谢您的回复。究竟为什么这是一个坏主意?我记得我读了一些关于启动一个可执行文件,即使没有Windows登录。而我的32位可执行文件不需要任何交互。但无论如何,这基本上是我自由决定32位进程是应用程序还是Windows服务。所以我也会检查ServiceController。 – tete 2012-04-10 11:20:14