如何在不退出和重新加载的情况下重新启动应用程序

本文关键字:加载 情况下 应用程序 重新启动 新加载 退出 | 更新日期: 2023-09-27 18:35:39

当我在按钮运行附加到自身的整个方法之前单击它时,我希望该按钮重置整个内容。因此,如果我使用Application.Restart();它只会重新启动应用程序,但不会运行其余部分。我将如何解决这个问题?我想重新启动应用程序的原因是有很多变量,我想重置所有变量。此重置过程必须通过单击特定按钮来完成。但是,该按钮具有大量函数,可在此方法的任何位置运行Application.Restart();方法。导致此方法不执行。所以基本上我希望这个方法重新启动所有变量,然后运行其余变量(从 enableButtons(); 开始)

private void puzzleToolStripMenuItem_Click(object sender, EventArgs e) {
        Application.Restart();
        enableButtons();
        puzzleDataMethod();
        MessageBox.Show...

如何在不退出和重新加载的情况下重新启动应用程序

您应该将所有变量移动到一个容器中。当应用程序需要重新启动时,您将重新初始化它。

你真的不能这样做。唯一的操作过程是将要重新启动后恢复的任何状态保留到磁盘,并确保Application.Restart()是方法中的最后一次调用。

这可能很简单,只需在独立存储中的文件中设置 true/false 标志,告知应用的新实例它因重启而启动,以便它可以在调用 Application.Restart() 后运行当前尝试运行的那些命令。

如果我理解正确的话。 你想

  1. 杀死旧形式。
  2. 打开新表单。
  3. 在新表单上运行功能。

你这样做是这样的:

public puzzleForm  
{ 
 void puzzleForm_Load(){    }
     
 void btn_ReOpen_click()
 {   
    Helper.NewPuzzle_Show();
   
    //Close old form.
    this.Close(); 
 }
 
 public void myResetFuncs()
 {
     enableButtons();
     puzzleDataMethod();
     MessageBox.Show...
 }
}

创建名为"助手.cs"的新类,将其复制粘贴到其中。

public static class Helper
{
  public static void NewPuzzle_Show()
  {
    // open new form
    var newform = new puzzleForm();
    newform.Show();
   
    //run Important funcs
    newform.myResetFuncs();
  }
}
如果你想清除

数据,你应该包括这样做的逻辑,而不是玩弄进程退出等。

正确的做法是,明确正在发生的事情,以及未来的自己版本,不要在墙上撞到他们的头,那就是有一个明确标记的功能,可以做你想做的事。在这种情况下,恕我直言,懒惰并不是明智的做法。

class Form1 : Form
{
    void ClearData()
    {
        // code that resets the data to defaults.
    }
}