c# - 非阻塞 io 函数而不是 cin.get()

标签 c# c++ io nonblocking

我有一个 C++ 控制台应用程序,它有一个选项可以通过按任意键来中断(通过使用 kbhit() 实现),在这种情况下,它会打印它所做的并退出(或者可以留下来完成工作(一些录音)并且仍然打印反馈)。我正在为该控制台应用程序制作一个 c# gui 应用程序(我正在从 c# 表单调用 exe 文件),而不是按键盘上的任何键,我使用的是“停止”按钮,它发送 Environment.NewLine(或“\n ") 到重定向的输入,在 C++ 应用程序中,我现在必须使用不同于 kbhit() 的东西才能工作。我尝试使用 cin.get(),例如:

if (kbhit() || (cin.get() > 0))  
    stop_recording=true;  

但 cin.get() 是一个阻塞函数,如果我想让控制台应用程序运行到最后,它不会在不按停止按钮的情况下关闭。是否有任何类似于 cin.get() 的函数实际上没有阻塞,或者可能有不同的方式将“任意键”从 c# 发送到我的控制台应用程序进程?

最佳答案

使用 getch() 代替 cin.get()。 它是一个阻塞命令,但仅通过执行它 if ( kbhit() ) 它会立即返回。

关于c# - 非阻塞 io 函数而不是 cin.get(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10285608/

相关文章:

java - java.io 中最常用的模式是什么?

c# - 如何在 .NET C# 中以编程方式确定 IP 是否来自同一 LAN

c# - IIS 虚拟文件夹 URL 加密

c++ - 如何在 Windows 上使用 gtest 获得代码覆盖率?

c++ - 适用于矩阵稀疏模式的哈希函数

c++ - 在 C++ 中使用字符串(搜索字符串、拆分字符串、cout<< 字符串)

2011年的Java : threaded sockets VS NIO: what to choose on 64bit OS and latest Java version?

c# - 如何使用 C# WPF 打开 chm 文件中的特定页面

c# - 如何生成 Task<Task> 以展开

Java 按日期保存对象