我正在模拟项目中的控制台窗口。我使用Process
类来运行控制台应用程序,并使用TextBox
让用户与控制台应用程序进行交互。我希望仅在进程等待用户输入时才启用TextBox
。
但是我找不到办法。这是一个类似的问题: Is my process waiting for input?但是这个问题的解决方案对我不起作用。我试过了
foreach (ProcessThread thread in process.Threads)
if (thread.ThreadState == ThreadState.Wait)
{
// see what thread.WaitReason is
}
但thread.WaitReason
总是在进程繁忙和等待输入时给ThreadWaitReason.Executive
。
现在我的替代解决方案是解析输出,因为控制台应用程序每次需要输入时都会打印一个特定模式的字符串。但这不是一个好的解决方案,因为可能存在错误,并且如果输出很难解析或者根本无法解析,它可能会因其他控制台应用程序而失败。
那么,有没有办法检测进程是否在等待输入?