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

2番目の編集:注: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

おはようございます、

デバッガーを接続してVisualStudioから起動したときにコンソールアプリが閉じないのですか、それともデバッガーを接続せずにファイルシステムから起動したときにコンソールアプリを閉じないのですか?

デバッガーが接続されている場合は、常に「Enterキーを押して終了します...」(または同様のメッセージ)が表示されます。

タスクマネージャーについて話すとき、そこに* .vshostプロセスがありますか?はいの場合、これはVisual Studioで「必須」であり、「実際の」コンソールアプリケーションではありません。Visual Studio内から実行可能ファイルを起動すると、常に*.vshostプロセスが表示されます。

お役に立てれば

于 2013-03-15T06:00:49.163 に答える
0
Environment.Exit();

これは機能しますか?

于 2013-03-15T05:56:15.983 に答える