【问题标题】:How can I read multiple lines of user input from the console?如何从控制台读取多行用户输入?
【发布时间】:2012-11-10 17:41:36
【问题描述】:

我想从控制台读取多行用户输入,但也允许使用 CTRL-C 等转义序列终止输入。我的问题是在按下转义序列时取消对 ReadLine() 的最后一次调用。我尝试过多线程并强制线程关闭,但我的问题是获取用户输入的最后一行。当按下转义序列时,最后一行丢失了,我无法使用主线程中的 ReadLine() 将其取回。如果我输入这样的内容:

Input
Input2 [CTRL-C],

我只得到“输入\n”。有没有办法获取多行输入,但在按下转义序列时捕获最后一行?

【问题讨论】:

  • 您是否为 CTRL+C 定义了console control handler?否则,将执行默认处理程序,调用 ExitProcess()。
  • 我做到了。另外,我没有设置使用 Ctrl+C,任何转义序列都可以。
  • 我想您可以在 CTRL+C 处理程序中使用带有 KeyAvailable 和 ReadKey 的循环来获取尚未读取的内容。 ReadLine 将不起作用,因为用户永远不会有机会结束该行......或者您可以尝试一些非常时髦的事情,比如从 CTRL+C 处理程序中接管标准输入并写一行结束。 (我没有尝试过,也不知道它是否会起作用。)
  • 我尝试使用 KeyAvailable/ReadKey 循环,它运行良好。感谢您的帮助。
  • 酷;我只是猜测没有任何编码,但如果它有效,我会将上述建议添加为实际答案......

标签: c# windows input console


【解决方案1】:

正如我在上面的评论中所建议的,它显然可以:

  • 为 CTRL+C 设置 console control handler
  • 通过使用 Console.KeyAvailable 和 Console.ReadKey 循环剩余输入来处理 CTRL-C。

【讨论】:

    猜你喜欢
    • 2011-11-08
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多