【发布时间】:2018-06-06 10:02:11
【问题描述】:
我编写了一个控制台程序,该程序从另一个控制台程序提供数据,该程序在 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)。
【问题讨论】:
标签: c# multithreading asynchronous process