在C#中,如果你需要从一个进程的连续输出(StdOut)中读取数据,并且需要多次访问这些数据,你可以使用Process
类来启动一个外部进程,并通过ProcessStartInfo
类来配置进程的输入输出流。以下是一个基本的示例,展示了如何实现这一点:
以下是一个C#示例,展示了如何异步读取一个进程的标准输出:
using System;
using System.Diagnostics;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
ProcessStartInfo startInfo = new ProcessStartInfo
{
FileName = "your-command-here", // 替换为你要运行的命令
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
};
using (Process process = new Process { StartInfo = startInfo })
{
process.Start();
while (!process.StandardOutput.EndOfStream)
{
string line = await process.StandardOutput.ReadLineAsync();
Console.WriteLine(line);
// 这里可以对line进行处理,例如存储到变量或数据库中
}
}
}
}
ReadLineAsync
方法在等待新行时阻塞了当前线程。List<string> outputLines = new List<string>();
while (!process.StandardOutput.EndOfStream)
{
string line = await process.StandardOutput.ReadLineAsync();
outputLines.Add(line);
Console.WriteLine(line);
}
// 进程结束后,可以多次访问outputLines
foreach (var line in outputLines)
{
Console.WriteLine("Retrieved: " + line);
}
通过这种方式,你可以有效地从C#中的进程连续读取输出,并且可以多次访问这些数据。记得根据实际需求调整代码逻辑。
领取专属 10元无门槛券
手把手带您无忧上云