0

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

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

谢谢你的帮助!

4

1 回答 1

1

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

我不建议从服务启动应用程序,因为这会给您带来很大的困难......

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

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

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

于 2012-04-10T11:36:12.043 回答