很多应用程序是需要7*24小时运行的,不知道那个家伙不小心就把你要定时执行的程序关闭了,而且你是运行在右下角任务栏的,不注意根本就不知道被关闭。我有过这样的经历,写了一个hqms接口程序,就是要定时推送病案数据的,在测试阶段,数据要连续上传十天才可以获取正式环境的账号,有同事竟然关了我的程序,并且没有重启,害我迟了几天获取正式账号。
我的监控进程的程序很简单,就是启动程序的时候,只在任务管理器中的进程列表中看到程序,不在任务栏上显示,代码如下:
this.WindowState = FormWindowState.Normal;
this.WindowState = FormWindowState.Minimized;
this.ShowInTaskbar = false;
使用定时器,及时查看要监控的程序,如下代码所示:
private bool isRunning = false;
private void timer1_Tick(object sender, EventArgs e)
{
if (isRunning) return;
isRunning = true;
Process[] ps = Process.GetProcessesByName(executeName);
if (ps.Length > 1)
{
int count = ps.Length;
foreach (Process p in ps)
{
count--;
p.Kill();
if (count == 1) break;
}
}
else if (ps.Length == 0)
{
Process.Start(executeName + ".exe");
WriteLogs("启动" + executeName + ".exe");
}
isRunning = false;
}
监控的进程要写在配置文件里面,如下所示:
<?xml version="1.0" encoding="GB2312"?>
<Items>
<ExecuteName>HqmsJob</ExecuteName>
</Items>
在启动监控程序的时候,就读出要监控的进程,然后定时器会定时读取进程的执行情况,如果出现两个的时候就会自动关闭一个,假如没有开启的时候,就启动,如下所示:
Process.Start(executeName + ".exe");
请查看具体源代码
http://download.youkuaiyun.com/detail/panliuwen/9131799