Csharp/C#教程:我的流程在等待输入吗?分享


我的流程在等待输入吗?

我正在使用Process类来运行exe。

exe是我无法控制的第三方控制台应用程序。

我想知道进程是否在命令行上等待输入。

如果它有任何区别,我打算在应用程序等待输入时终止它。

当程序的输出等待读取时,有适当的事件,但是当过程耐心地等待输入时,我看不到任何类似的事件。

ProcessStartInfo info = new ProcessStartInfo(); info.FileName = "myapp.exe"; info.CreateNoWindow = true; info.UseShellExecute = false; info.RedirectStandardError = true; info.RedirectStandardInput = true; info.RedirectStandardOutput = true; process.StartInfo = info; process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived); process.ErrorDataReceived += new DataReceivedEventHandler(process_ErrorDataReceived); process.Start(); process.BeginOutputReadLine(); process.BeginErrorReadLine(); process.WaitForExit(); 

如何检测我的进程正在等待输入?

根据第三方进程的具体操作,您可以尝试轮询其线程的状态:

 foreach(ProcessThread thread in process.Threads) if (thread.ThreadState == ThreadState.Wait && thread.WaitReason == ThreadWaitReason.UserRequest) process.Kill(); 

失败了……你可以尝试

 process.StandardInput.Close(); 

在调用Start()之后,我猜想如果它试图从标准输入读取,则会在子进程中引发exception。

如果控制台应用程序有某种提示等待输入,您可以使用进程的Process.StandardOutput属性定期解析控制台输出文本并等待所述提示。 一旦检测到正确的字符串,您就知道它正在等待输入。 请参阅https://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput.aspx 。

上述就是C#学习教程:我的流程在等待输入吗?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/954471.html

(0)
上一篇 2021年11月20日
下一篇 2021年11月20日

精彩推荐