重新启动C#应用程序而不实际关闭并重新打开?

时间:2012-11-01 04:09:11

标签: c# restart

如何让我的所有内部代码工作,就好像我使用了Application.Restart(),但实际上没有程序必须关闭并重新打开?

1 个答案:

答案 0 :(得分:6)

根据应用程序的设计,它可以像启动主表单的新实例和关闭任何现有表单实例一样简单。还需要重置表单变量之外的任何应用程序状态。对于像您正在搜索的应用程序而言,没有神奇的“重置”按钮。

一种方法是向Program.cs添加循环,以便在“重置”后表单关闭时保持应用运行:

static class Program
{
    public static bool KeepRunning { get; set; }

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        KeepRunning = true;
        while(KeepRunning)
        {
            KeepRunning = false;
            Application.Run(new Form1());
        }
    }
}

并在您的表单(或工具栏等)中将KeepRunning变量设置为true

private void btnClose_Click(object sender, EventArgs e)
{
    // close the form and let the app die
    this.Close();
}

private void btnReset_Click(object sender, EventArgs e)
{
    // close the form but keep the app running
    Program.KeepRunning = true;
    this.Close();
}