コンソールアプリケーションの実行中に押されたキーボードボタンと組み合わせを確認しています。
私がやりたいことの1つは、コンソールアプリ内でCtrl + Cをトラップして、終了するだけでなく、整理して正常に閉じるようにすることです。
あなたが提供できるどんな助けにも感謝します
Unix / Linuxで実行している場合は、Mono.UnixSignalを使用してください
Linuxアプリでこれを使用しています。利点は、再起動またはシステムのシャットダウンも検出することです。
この例は、このモノラルFAQページからのものです
// Catch SIGINT and SIGUSR1
UnixSignal[] signals = new UnixSignal [] {
new UnixSignal (Mono.Unix.Native.Signum.SIGINT),
new UnixSignal (Mono.Unix.Native.Signum.SIGUSR1),
};
Thread signal_thread = new Thread (delegate () {
while (true) {
// Wait for a signal to be delivered
int index = UnixSignal.WaitAny (signals, -1);
Mono.Unix.Native.Signum signal = signals [index].Signum;
// Notify the main thread that a signal was received,
// you can use things like:
// Application.Invoke () for Gtk#
// Control.Invoke on Windows.Forms
// Write to a pipe created with UnixPipes for server apps.
// Use an AutoResetEvent
// For example, this works with Gtk#
Application.Invoke (delegate () { ReceivedSignal (signal); }
});
Console.CancelKeyPress
イベントを使用できます。
このイベントは、System.ConsoleCancelEventHandlerおよびSystem.ConsoleCancelEventArgsと組み合わせて使用されます。CancelKeyPressイベントを使用すると、コンソールアプリケーションがCTRL + C信号をインターセプトできるため、アプリケーションは実行を続行するか終了するかを決定できます。