在c#中从同一个流中多次读取

Ani*_*oel 1 c# process

我想多次阅读我的程序的输出.有些事情,如果我通过X我得到输出,我显示它,然后再次,如果我通过Y我得到输出,我显示它.没有重新启动过程.尝试它我已经制定了ac程序

#include<stdio.h>
int main()
{
    int i;
    int j;
while(scanf("%d", &i))
{
    for(j = 0; j<=i;j++)
    printf("%d\n",j);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在我正在用C#进行插入,当我在文本框中输入文本时,它通过重定向standardinput(一个streamwriter)传递给程序并读取输出我称之为standardoutput(一个streamreader).readtoend() .

但这对我不起作用.因为它进入等待状态直到流返回一些指示告诉结束已被读取.

我怎么能做到这样的事情?

我尝试了异步读取,我调用了beginoutputread方法,但后来我不知道读取何时完成!有一种方法可以让我在原始程序中添加一个标记,以指示当前输入的输出结束.有没有其他方法让我实现它?

Dre*_*nic 6

如果流支持seek(CanSeek),您可以通过设置"回放"它

stream.Position = 0;
Run Code Online (Sandbox Code Playgroud)

从而开始重新阅读它.


Ars*_*yan 5

如果流不支持查找,但流中的数据不太大,则可以将该流读写到 MemoryStream,并根据需要多次从 MemoryStream 中读取。