2013-03-15 19 views
5

Ho un'applicazione C# che sto eseguendo, e quindi in qualche punto l'applicazione genera un errore che viene poi catturato, quindi l'applicazione dovrebbe terminare. E va a finire, ma le finestre di console rimane aperto ...La console # c non si chiude dopo la fine del programma

Ho anche controllato in windows task manager, sotto applications scheda, non è elencato la mia console, ma quando clicco go to process, non c'è un processo di tale domanda.

Questo è strano ... L'applicazione è terminata, il processo è terminato, ma la console rimane accesa? Come posso uccidere quella console?

Edit: il mio codice:

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

Seconda modifica: Nota:. Process.Getprocess() Kill(), Application.Exit(), Environment.Exit() non funzionano per me, nel task manager di Windows, non rimane alcun processo da eliminare, solo la console rimane aperta!

+0

Puoi pubblicare il codice? – Prashant

+4

Hai usato discussioni? –

+0

@Prashant: ha pubblicato il mio codice in modifica. – ojek

risposta

0
Environment.Exit(); 

sarà questo lavoro?

+0

Non funziona, Process.GetProcess(). Kill() non funziona. Penso che questo sia perché il processo termina senza problemi, solo la finestra della console rimane aperta. – ojek

4
Environment.Exit(0); 

o

this.Close(); 

Se si dispone di thread in esecuzione, si può provare questo metodo di forza bruta prima di chiamare 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

Non funziona, Process.GetProcess(). Kill() non funziona. Penso che questo sia perché il processo termina senza problemi, solo la finestra della console rimane aperta. – ojek

+0

nel tuo 'try' come hai chiuso la tua applicazione? hai usato Console.ReadLine(); quindi Application.Exit(); – Pyromancer

+0

Non c'è. ReadLine() – ojek

2

Buongiorno,

è la console l'app non si chiude quando lo si avvia da Visual Studio con il debugger allegato o non viene chiuso quando lo si avvia f rom del file system/senza debugger allegato?

Quando il debugger è collegato, verrà sempre visualizzato un 'Premere INVIO per uscire ...' (o un messaggio simile).

Quando si parla del task manager, viene visualizzato il processo * .vshost? Se sì, questo è 'richiesto' da Visual Studio e non è la tua applicazione di console 'reale'; vedrai sempre un processo * .vshost all'avvio di eseguibili da Visual Studio.

Spero che questo aiuti

+0

: D Sarebbe troppo facile. :) Ho provato a disattivare vshost, perché quella era l'unica cosa che rimaneva nell'albero del processo. Ad ogni modo, dopo aver spento la console rimane acceso, non rimane alcun processo per quella console. E per quanto riguarda la prima domanda - il programma funziona bene in VS, la console rimane attiva solo quando la eseguo sotto il mio sistema operativo. – ojek

Problemi correlati