C#在#x27之后暂停streamreader输出;x';行数,然后继续

C#在#x27之后暂停streamreader输出;x';行数,然后继续,c#,loops,ssh,streamreader,C#,Loops,Ssh,Streamreader,我正在开发一个实现SSH.Net库的C#程序。程序的一个功能允许通过SSH将命令发送到目标服务器,然后在文本字段中显示输出 这很好,但是当输出响应很大时,我遇到了一个问题。 当前显示所有输出,直到完成。我需要一种方法,例如显示30行,然后等待用户输入,然后显示接下来的30行 我可以使用for循环和计数器轻松地在30行停止输出,但我不确定如何再次启动它,如何回到streamreader中的同一点 var list = new List<string>();

我正在开发一个实现SSH.Net库的C#程序。程序的一个功能允许通过SSH将命令发送到目标服务器,然后在文本字段中显示输出

这很好,但是当输出响应很大时,我遇到了一个问题。 当前显示所有输出,直到完成。我需要一种方法,例如显示30行,然后等待用户输入,然后显示接下来的30行

我可以使用for循环和计数器轻松地在30行停止输出,但我不确定如何再次启动它,如何回到streamreader中的同一点

    var list = new List<string>();
                string line;
                output_textBox.Text = String.Empty;

                while (!asynch.IsCompleted)
                {
                    using (StreamReader sr = new StreamReader(cmd.OutputStream))
                    {
                        while ((line = sr.ReadLine()) != null)
                        {

                                list.Add(line);
                                Console.WriteLine(line);

                        }
                    }

                }
var list=newlist();
弦线;
output_textBox.Text=String.Empty;
而(!asynch.IsCompleted)
{
使用(StreamReader sr=newstreamreader(cmd.OutputStream))
{
而((line=sr.ReadLine())!=null)
{
列表。添加(行);
控制台写入线(行);
}
}
}
谢谢

编辑

让它与下面的工作

 using (StreamReader sr = new StreamReader(cmd.OutputStream))
                    {
                        while (!sr.EndOfStream)
                      {
                          while (line_count < 100 && (line = sr.ReadLine())      != null)
                        {

                            Console.SetOut(new     TextBoxWriter(output_textBox));
                            Console.WriteLine(line);
                            line_count++; 
                        }
                          MessageBox.Show("OK to continue"); 
                          line_count = 0; 
                    }
使用(StreamReader sr=newstreamreader(cmd.OutputStream))
{
而(!sr.EndOfStream)
{
而(line_count<100&&(line=sr.ReadLine())!=null)
{
控制台设置(新TextBoxWriter(输出文本框));
控制台写入线(行);
行数++;
}
MessageBox.Show(“确定继续”);
行计数=0;
}

您似乎在使用并行编程。您可以编写两个函数作为Producer和Consumer。例如,Producer将持续读取您的文本并将其放入内存列表中,Consumer将被消耗(并删除消耗的行)在适当的时间间隔从列表中返回。

要返回到上次完成的行:

int startFrom = 30; // skip first 30 lines

using (StreamReader rdr = new StreamReader(fs))
{
    // skip lines
    for (int i = 0; i < startFrom ; i++) { 
        rdr.ReadLine();  
    }
    // ... continue with processing file  
}
int startFrom=30;//跳过前30行
使用(StreamReader rdr=新StreamReader(fs))
{
//跳行
对于(inti=0;i
更新

public void Process() { 
    //init
    int startFrom = 0;
    int stepCount = 100;

    //read data  0 - 100
    ReadLines(startFrom, stepCount);
    startFrom += stepCount;

    // after user action
    //read data  100 - 200
    ReadLines(startFrom, stepCount);
}

public void ReadLines( int skipFirstNum, int readNum ) {
    using (StreamReader rdr = new StreamReader(cmd.OutputStream)) {
        // skip lines
        for (int i = 0; i < skipFirstNum; i++) { 
             rdr.ReadLine();  
        }
        for (int i = 0; i < readNum ; i++) { 
             // ... these are the lines to process
        }
    }
}
public void进程(){
//初始化
int startFrom=0;
int-stepCount=100;
//读取数据0-100
读取行(从开始,步数);
startFrom+=步数;
//用户操作后
//读取数据100-200
读取行(从开始,步数);
}
公共无效读线(int skipFirstNum,int readNum){
使用(StreamReader rdr=newstreamreader(cmd.OutputStream)){
//跳行
对于(int i=0;i
您是否在寻找
收益返回
?从SSH命令返回的内容可能有1000行,我想显示100行,然后等待用户点击按钮/键,然后再继续下一个100行。从SSH命令返回的内容可能有1000行,我想显示100行,然后等待用户点击按钮/键b在继续下一个100行之前,我并不是在实际读取文件,这是对服务器上发出的命令的SSH响应。谢谢…现在几乎像我想要的那样,请参阅更新的代码。现在,它在100行之后显示一个文本框,单击“确定”使其继续。