您的位置:首页 > 运维架构

进程监控程序的开发(程序运行监控)

2015-09-23 00:37 260 查看
很多应用程序是需要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.csdn.net/detail/panliuwen/9131799
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: