9

我有我正在运行的 c# 应用程序,然后在某些时候应用程序抛出一个错误,然后被捕获,然后应用程序应该结束。它结束了,但控制台窗口保持打开状态......

我什至签入windows task manager,在applications选项卡下,列出了我的控制台,但是当我单击 时go to process,没有该应用程序的进程。

这很奇怪......应用程序结束,进程结束,但控制台保持开启?我怎样才能杀死那个控制台?

编辑:我的代码:

static class Program
    {
        static void Main()
        {
            try
            {
                //bunch of static methods from other static classes are being invoked

                Setup.Driver.Close();//another static method
            }
            catch (Exception)
            {
                Setup.Driver.Close();
            }
        }
    }

第二次编辑:注意:Process.Getprocess().Kill()、Application.Exit()、Environment.Exit() 对我不起作用,在 Windows 任务管理器中,没有要杀死的进程,只有控制台保持打开状态!

4

6 回答 6

8
Environment.Exit(0);

或者

this.Close();

如果你有线程在运行,你可以在调用 Exit 之前尝试这个蛮力方法:

using System.Diagnostics;

ProcessThreadCollection currentThreads = Process.GetCurrentProcess().Threads;

foreach (var thread in currentThreads)
{
   thread.Interupt(); // If thread is waiting, stop waiting

   // or

   thread.Abort(); // Terminate thread immediately 

  // or

   thread.IsBackGround = true;
}
于 2013-03-15T05:58:21.703 回答
7

Environment.Exit 和 Application.Exit

Environment.Exit() 更干净。

http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx

于 2013-03-15T05:55:40.457 回答
2

早上好,

当您从带有调试器的 Visual Studio 启动控制台应用程序时,控制台应用程序是否没有关闭,或者当您从文件系统启动它/没有附加调试器时它也没有关闭?

附加调试器后,您将始终看到“Press ENTER to exit ...”(或类似消息)。

在谈论任务管理器时 - 你看到 *.vshost 进程在那里吗?如果是,这是 Visual Studio 的“必需”,不是您的“真正的”控制台应用程序;从 Visual Studio 中启动可执行文件时,您将始终看到 *.vshost 进程。

希望这可以帮助

于 2013-03-15T06:00:49.163 回答
1

您的程序很可能与另一个使其保持打开状态的进程相关联。

就我而言,该过程是 chromedriver。

检查您的进程和代码以查看您打开的内容以及仍在后台运行的内容。

于 2018-06-21T10:57:38.850 回答
1

我也被这个问题困住了。完成浏览器后,我只使用了Driver.Close(); 但是,这样做仍然使 chromedriver 在后台运行。所以我改为使用Driver.Quit();. 然后我确保return;从 Main 方法开始。

希望这可以帮助!

于 2019-07-24T13:41:35.443 回答
0
Environment.Exit();

这行得通吗?

于 2013-03-15T05:56:15.983 回答