2013-03-15 45 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