有時候,用戶在進行某個操作時,程序運行到某個階段突然崩潰,我們需要讓程序自動重啟,重新執行用戶之前的操作,當發現主程序還存在,就重啟用戶執行的附加程序。這時候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"); } } }
如圖:
紅色為子進程,藍色為主進程。
當紅框進程崩潰后,程序發現主程序正常運行,就重啟服務。