進程監控程序的開發(程序運行監控)

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

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