2

コンソールアプリケーションの実行中に押されたキーボードボタンと組み合わせを確認しています。

私がやりたいことの1つは、コンソールアプリ内でCtrl + Cをトラップして、終了するだけでなく、整理して正常に閉じるようにすることです。

あなたが提供できるどんな助けにも感謝します

4

2 に答える 2

1

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); }
    });
于 2012-11-30T20:36:02.733 に答える
0

Console.CancelKeyPressイベントを使用できます。

このイベントは、System.ConsoleCancelEventHandlerおよびSystem.ConsoleCancelEventArgsと組み合わせて使用​​されます。CancelKeyPressイベントを使用すると、コンソールアプリケーションがCTRL + C信号をインターセプトできるため、アプリケーションは実行を続行するか終了するかを決定できます。

于 2012-04-23T16:03:43.347 に答える