基本上,我需要我的应用程序从系统启动一直运行到系统关闭。我想出了以下方法:
- 创建 MyApp.exe 和 MyService.exe
- MyApp 应该将 MyService 安装为服务
- MyService 应该在启动时运行并定期检查 MyApp 是否正在运行。如果没有启动它。
这是我为我的服务编写的代码:
protected override void OnStart(string[] args)
{
while(true)
{
int processesCount =
Process.GetProcessesByName(Settings.Default.MyAppName).Count() +
Process.GetProcessesByName(Settings.Default.MyAppName + ".vshost").Count() +
Process.GetProcessesByName(Settings.Default.MyAppUpdaterName).Count();
if(processesCount==0)
{
//restore
var p = new Process { StartInfo = { FileName = Settings.Default.MyAppName, Arguments = "" } };
p.Start();
}
else
{
}
System.Threading.Thread.Sleep(3000);
}
}
- 如何安装此进程,使其在 Windows 启动时启动?
- 我不确定 OnStart 方法中的无限循环是否是一个好主意。是吗?
- 总体思路可以吗?
最佳答案
我所做的是拥有一个运行逻辑和主应用程序代码的 Windows 服务。然后,如果您需要 GUI,请让 Windows 服务通过 WCF 公开 Web 服务,并创建一个调用该 Web 服务的 Windows 应用程序。安装时,将您的 Windows 应用程序放入 Windows 启动中。
此模型将始终运行主应用程序代码,但 GUI 仅在用户登录时才会启动。
关于c# - 保持应用程序始终运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12984044/