从C#中的进程连续读取输出(StdOut),多次访问。
在C#中,可以使用Process
类来执行外部进程,并通过StandardOutput
属性来获取进程的标准输出。要实现连续读取输出,可以使用BeginOutputReadLine
方法和OutputDataReceived
事件。
下面是一个示例代码,演示如何从C#中的进程连续读取输出:
using System;
using System.Diagnostics;
class Program
{
static void Main()
{
Process process = new Process();
process.StartInfo.FileName = "your_executable_file.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.OutputDataReceived += Process_OutputDataReceived;
process.Start();
process.BeginOutputReadLine();
// 多次访问进程输出
for (int i = 0; i < 5; i++)
{
// 这里可以根据需要进行其他操作
// 等待一段时间,以便进程有输出
System.Threading.Thread.Sleep(1000);
}
process.CancelOutputRead();
process.WaitForExit();
}
static void Process_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
if (!string.IsNullOrEmpty(e.Data))
{
Console.WriteLine(e.Data);
}
}
}
上述代码中,首先创建一个Process
对象,并设置FileName
属性为要执行的可执行文件的路径。然后,将UseShellExecute
属性设置为false
,以便重定向标准输出。接下来,订阅OutputDataReceived
事件,并在事件处理程序中处理输出数据。然后,调用Start
方法启动进程,并调用BeginOutputReadLine
方法开始异步读取输出。在需要多次访问输出的地方,可以进行其他操作,然后等待一段时间,以便进程有输出。最后,调用CancelOutputRead
方法取消输出读取,并调用WaitForExit
方法等待进程退出。
这种方法适用于需要连续读取进程输出的场景,例如实时日志监控、命令行交互等。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云