我已经编写了一个控制台程序,它从另一个控制台程序提供数据,这些程序在3秒或更长时间后经常写入数据行,所以我尝试通过BeginOutputReadLine从控制台读取输出数据这是一个异步方法和OutputDataRecieved事件但是在读取之后它的线程退出并且它会间隔3分钟或更长时间,我应该怎么做以防止这个间隔?
using System.Diagnostics;
namespace FirstTest
{
class Program
{
static void Main(string[] args)
{
ProcessStartInfo info = new ProcessStartInfo("start.bat")
{
UseShellExecute = false,
RedirectStandardOutput = true
};
Process process = new Process() { StartInfo = info };
process.OutputDataReceived += new DataReceivedEventHandler((sender, e) =>
{
Debug.WriteLine(e.Data);
});
process.EnableRaisingEvents = true;
process.Start();
process.BeginOutputReadLine();
while (true) ;
}
}
}
调试输出如下:
线程0x2030已退出,代码为0(0x0)。
线程0x3b2c已退出,代码为0(0x0)。
答案 0 :(得分:0)
尝试使用以下代码从进程对象中读取输出流:
ProcessStartInfo info = new ProcessStartInfo()
{
RedirectStandardOutput = true,
FileName = "start.bat",
UseShellExecute = false,
CreateNoWindow = true
};
var process = new Process {
StartInfo = info
};
然后开始这个过程并从中读取:
process.Start();
while (!process.StandardOutput.EndOfStream) {
var outputLine = process.StandardOutput.ReadLine();
// do something with the outputLine
}