我正在撰寫一個軟體并嘗試在其中實作一個自動更新程式作為一個單獨的應用程式。我在同一個解決方案下同時擁有軟體本身和更新程式。
當服務器有可用更新時,我的程式會提示用戶更新,這部分有效。
我未能呼叫更新程式應用程式,然后僅退出第一個程式。
這是我沒有的:
private void button2_Click(object sender, EventArgs e)
{
// Update
ExecuteAsAdmin("AutoUpdater.exe");
//System.Windows.Forms.Application.Exit();
Process.GetCurrentProcess().Kill();
}
public void ExecuteAsAdmin(string fileName)
{
Process proc = new Process();
proc.StartInfo.FileName = fileName;
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.Verb = "runas";
proc.Start();
}
這確實成功啟動了 AutoUpdater.exe,但同時存在第一個程式和 AutoUpdater.exe,后者不應退出,因為它應該進行更新。
如何從同一解決方案中僅退出一個程式?
uj5u.com熱心網友回復:
將關閉主應用程式的代碼添加到更新程式中。您知道行程名稱,因此應該相當容易。通過這種方式,您還可以檢查更新程式是否在主應用程式關閉之前實際開始運行。
下面的代碼是從這個答案中借用的:https : //stackoverflow.com/a/49245781/3279876我還沒有自己測驗過。
Process[] runningProcesses = Process.GetProcesses();
foreach (Process process in runningProcesses)
{
// now check the modules of the process
foreach (ProcessModule module in process.Modules)
{
if (module.FileName.Equals("MyProcess.exe"))
{
process.Kill();
} else
{
enter code here if process not found
}
}
}
uj5u.com熱心網友回復:
這適用于我系統中的最小 Winforms 應用程式:
System.Diagnostics.Process p = System.Diagnostics.Process.Start("notepad.exe");
Application.Exit();
還有這個:
ExecuteAsAdmin("notepad.exe");
Application.Exit()
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408706.html
標籤:
上一篇:為什么我的.NETCore6控制臺應用程式不想在CLI中運行?
下一篇:告訴用戶只按
