在C#中的FormClosed事件上重新启动应用程序

时间:2010-11-25 16:40:51

标签: c# .net winforms multithreading

我设计了一个表单并且在FormClosed事件上我正在通过Application.Restart();

重新启动应用程序

现在问题是

  1. 应用程序是在同一个线程上还是在新线程上重新启动?
  2. 如何关闭应用程序,当我的应用程序已在运行时

4 个答案:

答案 0 :(得分:1)

重新启动的应用程序是一个新进程,因此它也是一个全新的线程。

关闭使用; Application.Exit()

杀死:Process.GetCurrentProcess().Kill();

编辑 - 添加杀!

答案 1 :(得分:0)

应用程序在新线程上重新启动。

我会使用FormClosing Event并设置FormClosingEventArgs.Cancel = true,当我希望应用程序不要实际关闭时,让它在必须关闭时放手。

public void frmMyForm_FormClosing(object sender, FormClosingEventArgs e) {
    if ("frmMyForm has to be closed and the application closed")
        e.Cancel = true;
    // else the e.Cancel will never be changed, then the application is closed normally.
}

当您致电frmMyForm.Close()时,系统会调用 FormClosing事件

希望我理解这个问题。

答案 2 :(得分:0)

当前应用程序将关闭/关闭,并将创建一个新进程(具有相同的启动参数)。

  1. 所以这将是一个新的主题。甚至是一个新的过程。
  2. 将通过调用restart来关闭当前应用程序。新的应用程序必须自己关闭。
  3. 您可以通过取消FormClosing事件中的关闭(从打开的表单)来阻止关闭当前应用程序。即使您可以取消关闭,也会启动新的应用程序,最终会使您的应用程序的两个实例处于活动状态。

答案 3 :(得分:0)

@Javed我认为最好的选择是在关闭时使用Process启动应用程序的新实例并让你的第一个实例平静下来;)