将键盘快捷键添加到控制台应用程序 - 单声道兼容
本文关键字:声道 单声道 快捷键 键盘 添加 应用程序 控制台 | 更新日期: 2023-09-27 18:31:57
我正在检查在控制台应用程序运行时按下了哪些键盘按钮和组合。
我想做的一件事是在控制台应用程序中捕获 Ctrl+C,这样它就不会退出,而是进行一些整理并优雅地关闭。
感谢您提供的任何帮助
如果你在 Unix/Linux 下运行,请使用 Mono.UnixSignal
我在我的 Linux 应用程序上使用它。优点是它还将检测到重新启动或系统关闭。
此示例来自此单声道常见问题解答页面
// 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. 事件使控制台应用程序能够截获 CTRL+C 信号,以便应用程序可以决定是否继续 执行或终止。