2013-03-15 89 views
5

我运行的是c#应用程序,然后在某些时候,应用程序抛出一个错误,然后应用程序应该结束。它结束,但控制台窗口保持打开...程序结束后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()杀死(),Application.Exit(),Environment.Exit()不是为我工作,在Windows任务管理器中,没有任何过程可以杀死,只有控制台保持打开状态!

+0

你能后的代码? – Prashant 2013-03-15 05:50:46

+4

你使用线程? – 2013-03-15 05:51:38

+0

@Prashant:在编辑中发布我的代码。 – ojek 2013-03-15 05:52:43

回答

0
Environment.Exit(); 

将这项工作?

+0

不工作,Process.GetProcess()。Kill()也不能工作。我认为这是因为过程没有任何问题,只是控制台窗口保持打开状态。 – ojek 2013-03-15 05:57:14

4
Environment.Exit(0); 

this.Close(); 

如果你有线程中运行,调用退出之前,你可以试试这个蛮力方法:

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; 
} 
+0

不工作,Process.GetProcess()。Kill()也不工作。我认为这是因为过程没有任何问题,只是控制台窗口保持打开状态。 – ojek 2013-03-15 05:59:28

+0

在你的“试用”中你是如何关闭你的应用程序的?你使用Console.ReadLine();然后Application.Exit(); – Pyromancer 2013-03-15 06:02:12

+0

没有.ReadLine() – ojek 2013-03-15 06:13:31

2

早上好,

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

当连接调试器时,您将始终看到'按ENTER键退出...'(或类似的消息)。

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

希望这有助于

+0

:D这太容易了。 :)我试着关闭vshost,因为那是留在进程树中的唯一东西。无论如何,关闭控制台后仍然保持开启状态,只剩下该控制台的进程。 至于第一个问题 - 程序在VS中工作正常,只有当我在我的操作系统下运行它时,控制台才会保持运行状态。 – ojek 2013-03-15 06:03:53