gpt4 book ai didi

wpf - 可靠地重新启动单实例 WPF 应用程序

转载 作者:行者123 更新时间:2023-12-03 20:15:44 25 4
gpt4 key购买 nike

我想让我当前的应用程序关闭并重新启动。我看过很多关于这个的帖子,但是这些似乎都不适合我。

我试过了

 System.Diagnostics.Process.Start(System.Windows.Application.ResourceAssembly.Location);
System.Windows.Application.Current.Shutdown();

但是,这只会重新启动应用程序一次。如果我再次按下“重新启动”按钮(在已经重新启动的应用程序上),它只会关闭。

我还尝试启动一个新的 System.Diagnostics.Process 并关闭当前进程,但同样不会重新启动,它只是关闭。

如何重新启动当前的 WPF 应用程序?

最佳答案

您可以创建另一个应用程序,在退出应用程序时启动该应用程序,作为返回,它会再次启动您的应用程序。有点像修补程序的工作方式,只是不修补任何东西。从好的方面来说,您可以在该“重新启动应用程序”中有一个循环,它会检查您的主应用程序进程的所有正在运行的进程,并且只有在它不再出现在进程中时才尝试重新启动它 - 并且您得到了裸机修补程序的骨骼也:) 虽然您似乎没有重新启动应用程序的问题,因为它仍在进程列表中 - 这是我在生产环境中执行此操作时采用的方式,因为这可以为您提供最多控制恕我直言。

编辑:

您的主应用程序的按钮事件处理程序(或您想要重新启动应用程序的任何地方)中的那部分(在我的情况下是 Process2BRestarted.exe ):

    private void cmdRestart_Click(object sender, EventArgs e)
{
var info = new ProcessStartInfo();

info.FileName = "ProcessReStarter";
info.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(info);

Application.Exit();
}

这应该进入您的实用程序/重启应用程序( ProcessReStarter.exe 在这里):

    private void MainForm_Load(object sender, EventArgs e)
{
// wait for main application process to end
// really should implement some kind of error-checking/timer here also
while (Process.GetProcessesByName("Process2BRestarted").Count() > 0) { }
// ok, process should not be running any longer, restart it
Process.Start("Process2BRestarted");
// and exit the utility app
Application.Exit();
}

现在单击重新启动按钮将创建一个新进程 ProcessReStarter.exe ,它将遍历所有正在运行的进程的进程列表 - 检查 Process2BRestarted 是否仍在运行。如果进程没有出现在列表中(不再),它现在将启动一个新的 Process2BRestarted.exe 进程并自行退出。

关于wpf - 可靠地重新启动单实例 WPF 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7828719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com