在单独的线程中侦听控制台应用的输入

本文关键字:控制台 应用 输入 单独 线程 | 更新日期: 2023-09-27 18:35:52

我目前正在处理一个 c# 项目,该项目有一个用于 Console.CancelKey EventHandler 的事件处理程序。我遇到的问题是,如果用户按 Ctrl+C 停止应用程序,则事件不会被触发,因为我认为它太忙于做其他事情来处理事件。如果应用程序很安静,即不必做太多工作,则会捕获 Ctrl+C 并运行该事件处理程序。

我假设我需要在单独的线程中侦听事件处理程序,以便理解它,但是我将如何做到这一点。

感谢您提供的任何帮助。

在单独的线程中侦听控制台应用的输入

您可以尝试设置 Console.TreatControlCAsInput ,这会阻止 CTRL+C 组合在操作系统级别进行处理。 需要注意的是,如果用户确实想要停止应用程序,他们要么必须使用 CTRL+BREAK,要么必须在运行事件处理程序后手动强制关闭应用程序。