控制台应用程序状态更改了事件/回调 - 如何完成(在开始等待输入时通知)?

时间:2015-04-22 07:43:00

标签: c# c++ .net windows winapi

如何更改 控制台进程 线程的状态时收到通知?

再次 - 这是一个控制台窗口进程(cmd.exe) - 我需要根据它是否期望输入与它进行交互,我有几个,我会听几个事件(例如{发出{1}}字符串)

我可以利用stdoutProcessThread.ThreadState来查询当前状态,但我需要事件驱动模式。

是否有可能通过Windows Hooks或其他一些机制?

编辑:

我开了another question因为我完全错过了这个问题......不知道是否要关闭这个......

3 个答案:

答案 0 :(得分:0)

使用EventWaitHandle允许线程发信号通知等待线程发生了特定事件 - 有关示例,请参阅this链接。您没有在问题中提供任何进一步的细节,但这应该可以帮助您入门。

答案 1 :(得分:0)

如果它不需要像ThreadState那样低级,你可以在你的线程处理代码中驱动它,并使用类似AutoResetEvent的信号来指示状态变化。

答案 2 :(得分:0)

您能看一下以下链接:

http://blogs.msmvps.com/luisabreu/blog/2007/09/24/c-signaling-state-changes-through-events/

可能对你有用。

编辑:

来自Microsoft:

  

要在后台执行耗时的操作,请创建一个   BackgroundWorker并监听报告进度的事件   操作完成后的操作和信号。您可以   以编程方式创建BackgroundWorker,或者您可以将其拖到   您的表单来自工具箱的“组件”选项卡。如果你创建了   在Windows窗体设计器中的BackgroundWorker,它将出现在   Component Tray及其属性将显示在Properties中   窗口。

详细了解班级及其成员:

BackgroundWorker Class

这可能是一个引发您可能正在寻找的事件的解决方案。希望这次有所帮助。 :)