【发布时间】:2012-10-20 08:28:43
【问题描述】:
基本上我需要我的应用程序从系统启动到系统关闭运行。我想出了以下方法:
- 创建 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 方法中的这个无限循环是否是个好主意。是吗?
- 总体思路可以吗?
【问题讨论】:
-
为什么不只拥有 myservice.exe?
-
这只是对用户的敌意。毫无意义,她当然会扼杀你的服务。编写真正有用的代码,用户回报并保持运行。
-
@HansPassant 这只是我老板给我的要求。这个应用程序应该监控工人的效率,所以我必须让他们很难关闭它或忘记启动它。 :)
-
如果他们杀死程序,那么他们的生产力为零。在编程中没有真正的马意识替代品,当用户发现他们被监控时,你会看到很多。
-
@HansPassant 如果他们手动终止程序,我对此无能为力,但他们的经理绝对可以:)