1 2

C#中的Process类使用

有时候,用户在进行某个操作时,程序运行到某个阶段突然崩溃,我们需要让程序自动重启,重新执行用户之前的操作,当发现主程序还存在,就重启用户执行的附加程序。这时候Process就派上了用场。

控制台测试用例:

public class Program
    {
        /// <summary>
        /// 保护的算法进程名称
        /// </summary>
        public static string keepProgessName = "iips.sdk.iauapp";

        /// <summary>
        /// 主算法进程名称
        /// </summary>
        public static string mainProcessName = "ipvs.sdk.vodapp.ips";
  

        static void Main(string[] args)
        {
            #region 进程Process

              //获取本机的进程
              //var pros = Process.GetProcesses(".");

            //打开txt文件
            Process p = Process.Start(@"C:\Users\11456\Desktop/新建文本文档.txt");
            //查看iips.sdk.iauapp进程是否存在,存在就为它注册退出时间
            Process[] pro = Process.GetProcessesByName(keepProgessName);
            if (pro.Count() > 0)
            {
                //获取或设置在进程终止时是否应引发 System.Diagnostics.Process.Exited 事件,true:引发
                pro[0].EnableRaisingEvents = true;
                //进程推出后的执行时间
                pro[0].Exited += Process_Exited;
            }
            Console.ReadKey();
            #endregion
       
        }

        private static void Process_Exited(object sender, EventArgs e)
        {
            //判断主进程是否存在,存在就再次自动重启程序
            Process[] pro = Process.GetProcessesByName(mainProcessName);
            if (pro.Count() > 0)
            {
                Process.Start(@"C:\源代码\imageEnhance\Dev\Dev3.2\AppProject\iImgEnh\binr\identification\iips.sdk.iauapp.exe");
            }
           
        }
    }

 如图:

红色为子进程,蓝色为主进程。

当红框进程崩溃后,程序发现主程序正常运行,就重启服务。

 

posted @ 2019-06-05 17:54  大海的泡沫  阅读(12324)  评论(2编辑  收藏  举报
1 2