複数のスレッドを使用したC#でのコンソールアプリケーション終了の管理
マルチスレッドC#コンソールアプリケーションでは、クリーンプログラムのシャットダウンがリソース管理に重要であることを確認してください。 残念ながら、.NETはコンソール出口処理のための直接イベントを提供していません。 これには、代替の方法が必要です。1つの効果的なソリューションがWindows API関数をレバレッジします
これにより、特定のコンソール制御信号によってトリガーされるカスタムハンドラー関数の登録が可能になります。
SetConsoleCtrlHandler
ここに実装の実装があります:DllImport
、
、using System; using System.Runtime.InteropServices; // ... (rest of the code remains the same)
をキャプチャするためにSetConsoleCtrlHandler
を利用する方法を示しています。 これらのイベントのいずれかが発生したときにCTRL_C_EVENT
関数が実行されます。
CTRL_LOGOFF_EVENT
CTRL_SHUTDOWN_EVENT
重要な考慮事項:CTRL_CLOSE_EVENT
この方法の信頼性は、関連する議論に記載されているように、Windows 7で損なわれる可能性があります。 さまざまなWindowsバージョンにわたる最適な互換性には、さらなる調査が必要になる場合があります。
以上がC#MultithreadedアプリケーションでコンソールExitイベントをキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。