2013-03-15 8 views
5

Mam aplikację C#, że jestem uruchomiony, a następnie w pewnym momencie aplikacja zgłasza błąd, który jest następnie catched, a następnie aplikacja powinna się zakończyć. Kończy się, ale okna konsoli pozostają otwarte ...Konsola C# nie będzie zamykana po zakończeniu programu

Sprawdziłem nawet windows task manager, pod kartą applications, tam jest wyświetlona moja konsola, ale kiedy klikam go to process, nie ma procesu tej aplikacji.

To dziwne ... Aplikacja zakończyła się, proces się zakończył, ale konsola pozostaje włączona? Jak mogę zabić tę konsolę?

Edit: mój kod:

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(); 
      } 
     } 
    } 

Druga edycja:. Uwaga: Process.Getprocess() Kill(), Application.Exit(), Environment.Exit() nie działa dla mnie, w menedżerze zadań systemu Windows nie ma już procesu do zabicia, tylko konsola pozostaje otwarta!

+0

Czy możesz opublikować kod? – Prashant

+4

Użyłeś wątków? –

+0

@Prashant: Opublikowano mój kod w edycji. – ojek

Odpowiedz

0
Environment.Exit(); 

to będzie działać?

+0

Nie działa, Process.GetProcess(). Funkcja Kill() również nie działa. Myślę, że to dlatego, że proces kończy się bez żadnych problemów, tylko okno konsoli pozostaje otwarte. – ojek

4
Environment.Exit(0); 

lub

this.Close(); 

Jeśli masz wątków działa, można spróbować tej brutalnej metody siłowe przed wywołaniem 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; 
} 
+0

Nie działa, Process.GetProcess(). Funkcja Kill() również nie działa. Myślę, że to dlatego, że proces kończy się bez żadnych problemów, tylko okno konsoli pozostaje otwarte. – ojek

+0

w swojej "próbie", w jaki sposób zamknąłeś aplikację? użyłeś Console.ReadLine(); następnie Application.Exit(); – Pyromancer

+0

Nie ma .ReadLine() – ojek

2

Dzień dobry,

jest konsola aplikacja nie zamyka się po uruchomieniu z Visual Studio z dołączonym debuggerem lub nie jest również zamknięta po uruchomieniu f rom system plików/bez dołączonego debuggera?

Po podłączeniu debugera zawsze wyświetli się komunikat "Naciśnij klawisz ENTER, aby zakończyć ..." (lub podobny komunikat).

Mówiąc o menedżerze zadań - czy widzisz tam proces * .vshost? Jeśli tak, jest to "wymagane" przez Visual Studio i nie jest "prawdziwą" aplikacją konsolową; zawsze będziesz widział proces * .vshost podczas uruchamiania plików wykonywalnych z programu Visual Studio.

Mam nadzieję, że to pomoże

+0

: D To byłoby zbyt łatwe. :) Próbowałem wyłączyć vshost, ponieważ to była jedyna rzecz, która została w drzewie procesu. W każdym razie po wyłączeniu konsoli nadal pozostaje, po prostu nie ma już procesu dla tej konsoli. A co do pierwszego pytania - program działa dobrze w VS, konsola pozostaje włączona tylko wtedy, gdy uruchomię go pod moim systemem operacyjnym. – ojek

Powiązane problemy