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

很多应用程序是需要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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章