この会社にはコンソール アプリケーションがあり、コンソール アプリケーション ウィンドウを閉じる前にビジネス ロジックを処理したいと考えています。たとえば、ウィンドウが誤って閉じられた場合、またはメッセージ キューがメッセージ リマインダーの送信を開始した場合、ウィンドウを閉じることはコンソール アプリケーションが破棄されることを意味するため、メッセージ通知も送信する必要があります。この時点では、ウィンドウを閉じるイベントを追加すると便利です。
WinForm のようにフォームの終了イベントや終了イベントを制御する方法はあるのかと多くの友人が尋ねます。デフォルトでは何もありません。自分で書くことができます。次の手順を実行します:
1. [Program.cs]ファイルのProgramクラスに以下のコードを記述します。デリゲート HandlerAppClose を追加すると、関数ポインターがシステム API 関数 SetConsoleCtrlHandler に渡されます。
コード:
#region 激活关闭窗口事件
public delegate bool ControlCtrlDelegate(int CtrlType);
[DllImport("kernel32.dll")]
private static extern bool SetConsoleCtrlHandler(ControlCtrlDelegate HandlerAppClose, bool Add);
private static ControlCtrlDelegate cancelHandler = new ControlCtrlDelegate(HandlerAppClose);
/// <summary>
/// 关闭窗口时的事件
/// </summary>
/// <param name="CtrlType"></param>
/// <returns></returns>
static bool HandlerAppClose(int CtrlType)
{
Console.WriteLine("关闭窗口事件被激活");
Console.WriteLine("do something...");
return false;
}
#endregion
2. 次に、Program クラスの Main メソッドにウィンドウを閉じるイベントを登録します。
コード:
//注册窗口关闭事件
bool bRet = SetConsoleCtrlHandler(cancelHandler, true);
3. 効果としては、[×]をクリックしてウィンドウを閉じると、ウィンドウクローズイベントが発生します。
このイベントに参加します:
著作権表示: この記事はオリジナル記事であり、著作権は [Xigua Programmer] に属します。転載する場合は出典を明記してください。ご質問がある場合は、プライベート メッセージを送信してください。
元のリンク:C# コンソール アプリケーションにウィンドウを閉じるイベントを追加するにはどうすればよいですか? _Xigua プログラマーのブログ - CSDN ブログ