2

使用時にコンソールが閉じられたことを検出したときに関数を起動するにはどうすればよいEnvironment.Exit(0)ですか?

4

1 に答える 1

6

これを行う最も簡単な方法は、おそらく、アプリケーションの親プロセスが終了したときに発生するAppDomain.ProcessExitイベントを処理することです。

例えば:

Module MyApp

    Sub Main()
        ' Attach the event handler method
        AddHandler AppDomain.CurrentDomain.ProcessExit, AddressOf MyApp_ProcessExit

        ' Do something
        ' ...

        Environment.Exit(0)
    End Sub

    Private Sub MyApp_ProcessExit(sender As Object, e As EventArgs)
        Console.WriteLine("App Is Exiting...")
    End Sub

End Module

ただし、電話をかけるEnvironment.Exitことは、元の問題に対する最善の解決策ではない場合があります。一般に、このメソッドを使用する必要があるのは、他のフォアグラウンド スレッドが実行されている可能性がある場合のみです。その場合、プロセス全体を強制終了する厳格な手段に頼ることなく、他のスレッドを正常に終了する方法を調査する価値があります。

Environment.Exit、やや心地よい響きの名前にもかかわらず、かなり残忍な措置です。Windows タスク マネージャーで [タスクの終了] をクリックするほど悪くはありません (そうすると、イベントが発生しないことProcessExitに注意してください。つまり、上記の提案は機能しません)。どちらかが欲しい。

于 2012-04-11T03:35:28.233 に答える