如何在不退出和重新加载的情况下重新启动应用程序
本文关键字:加载 情况下 应用程序 重新启动 新加载 退出 | 更新日期: 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()
后运行当前尝试运行的那些命令。
如果我理解正确的话。 你想
- 杀死旧形式。
- 打开新表单。
- 在新表单上运行功能。
你这样做是这样的:
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.
}
}