使用QWinEventNotifier响应Windows上可用的Stdin数据
我正在构建一个Qt-windows应用程序,它需要对写入其stdin的数据做出反应。 我意识到我可以在这里使用阻塞线程或轮询计时器,但似乎使用QWinEventNotifier应该是可行的 但是,如果我将通知程序初始化为使用QWinEventNotifier响应Windows上可用的Stdin数据,windows,qt,winapi,qt5,Windows,Qt,Winapi,Qt5,我正在构建一个Qt-windows应用程序,它需要对写入其stdin的数据做出反应。 我意识到我可以在这里使用阻塞线程或轮询计时器,但似乎使用QWinEventNotifier应该是可行的 但是,如果我将通知程序初始化为通知程序\=new QWinEventNotifier(GetStdHandle(STD\u INPUT\u HANDLE)),此通知程序似乎会不断发出激活的,无论是否有任何可读取的数据 我错过了什么?我是否需要以某种方式手动重置事件?我应该使用不同的手柄吗 这里的结果是,当我尝
通知程序\=new QWinEventNotifier(GetStdHandle(STD\u INPUT\u HANDLE))
,此通知程序似乎会不断发出激活的
,无论是否有任何可读取的数据
我错过了什么?我是否需要以某种方式手动重置事件?我应该使用不同的手柄吗
这里的结果是,当我尝试在发出此信号时从stdin读取时,调用将永远阻塞-stdin流仍然打开,但没有足够的数据可读取,因此在写入更多数据之前,调用不会返回。Qt是否提供了任何工具,可以让我避免陷入这样的困境,而不必求助于混乱的终止线程?看到这一点,谢谢,我没有遇到过这个例子——但是,这个例子似乎也说明了我的问题。即使没有可读取的内容,通知程序也会发出激活的消息,然后读取调用将永远阻塞。阻塞并挂起UI,但在我的例子中,控制台本身也不会@user3896248。如果我找到了解决方案,我会告诉你的。谢谢,我没有遇到过那个例子,但是,这个例子似乎也说明了我的问题。即使没有可读取的内容,通知程序也会发出激活的消息,然后读取调用将永远阻塞。阻塞并挂起UI,但在我的例子中,控制台本身也不会@user3896248。如果我找到解决办法,我会告诉你的。