如何更改 控制台进程 线程的状态时收到通知?
再次 - 这是一个控制台窗口进程(cmd.exe
) - 我需要根据它是否期望输入与它进行交互,我有几个,我会听几个事件(例如{发出{1}}字符串)
我可以利用stdout
和ProcessThread.ThreadState
来查询当前状态,但我需要事件驱动模式。
是否有可能通过Windows Hooks或其他一些机制?
我开了another question因为我完全错过了这个问题......不知道是否要关闭这个......
答案 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中 窗口。
详细了解班级及其成员:
这可能是一个引发您可能正在寻找的事件的解决方案。希望这次有所帮助。 :)