第一步:新建一個控制台項目,作為關閉當前應用程序的調用程序。
using System; using System.Configuration; using System.Diagnostics; namespace RestartApp { class Program { private static string appName = ConfigurationManager.AppSettings["appName"]; static void Main(string[] args) { try { AppClose(); AppStart(); //退出應用程序 Environment.Exit(0); } catch (Exception) { throw; } } /// <summary> /// 開啟應用程序 /// </summary> private static void AppStart() { ProcessStartInfo psInfo = new ProcessStartInfo(); psInfo.FileName = appName; //不顯示窗體 psInfo.CreateNoWindow = true; //上級目錄的文件 psInfo.WorkingDirectory = @"..\"; Process process; try { process = Process.Start(psInfo); } catch (Exception exception) { throw; } } /// <summary> /// 關閉應用程序 /// </summary> private static void AppClose() { Process[] proc = Process.GetProcessesByName(appName); for (int i = 0; i < proc.Length; i++) { if (proc[i].ProcessName == appName) { proc[i].Kill(); } } GC.Collect(); } } }
添加System.configuration的引用
添加配置文件app.config
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="appName" value="winformTest"/> </appSettings> </configuration>
其中winformTest 是我要控制重啟的應用程序名稱
第二步:新建工程 winformTest
界面如圖:
添加代碼:
using System; using System.Configuration; using System.Diagnostics; using System.Windows.Forms; namespace winformTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private string appName = ConfigurationManager.AppSettings["appName"]; private void button1_Click(object sender, EventArgs e) { ProcessStartInfo psInfo = new ProcessStartInfo(); psInfo.FileName = appName; psInfo.WorkingDirectory = @".\appStart\"; Process process; try { process = Process.Start(psInfo); } catch (Exception exception) { throw; } } } }
上面的目錄是winformTest 請求的RestartApp所在的目錄,我是放在一個單獨文件夾中的
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="appName" value="RestartApp"/> </appSettings> </configuration>
第三步:將編譯好的RestartApp運行文件放在appStart目錄中,就可以了
測試-點擊重啟 軟件啟動RestartApp 然后RestartApp 關閉winformTest ,最后執行啟動winformTest 。完成