调用Application.Exit()后,应用程序仍在内存中运行

我正在构建的应用程序在使用Application.Exit()关闭后仍在内存中运行(在任务管理器中检查Application.Exit() 。 正因为如此,当我如上所述关闭它后再次运行它时,我收到此错误“一次只有一个实例”。 你能告诉我如何完全关闭我的申请吗?

看来这是一个Windows ap,你正在调用System.Windows.Forms.Application.Exit()但是仍有一个线程在后台运行。 你有没有尝试过

 Application.ExitThread(); Environment.Exit(); 

您可以像Jonesy提到的那样终止该进程,如果它是一个单独的应用程序而不是当前正在运行的进程,则传入进程的进程ID。

为此,您需要使用System.Diagnostics.Process命名空间并循环当前正在运行的进程以获取正确的pid,然后在该pid上调用kill。

有一次当我有奇怪的行为(在Application.Exit()期间崩溃/冻结)时,我使用了Process.GetCurrentProcess().CloseMainWindow()

该函数位于System.Diagnostics命名空间中,似乎比Kill()更好,因为它不会强制它以相同的方式退出。

因为使用Foreground Thread和Lybda Expession线程所以,线程将继续运行,直到最后一个前台线程终止。 换句话说,当所有前台线程都停止时,应用程序将关闭。 这就是为什么应用程序不会等到后台线程完成的原因,但它会等到所有前台线程都被终止。 所以在这种情况下,我们必须通过使用显式停止所有正在运行的线程

Environment.Exit(Environment.ExitCode);

这使内存管理完美,没有内存泄漏。