我分析原因如下:
c#调用cmd命令执行va.exe并且希望读取数据的时候,va.exe一直向管道中写入数据,但是c#程序一直没有读取数据的机会。Sleep(100)时一直等待,直到缓冲区满,va.exe阻塞,c#才开始读取数据;而Sleep(1)的时候,缓冲区满的速度比较快,所以c#读取数据开始的就比较快。
但我现在想实现va.exe写数据的同时,c#可以读取数据,如何实现?
c#调用cmd命令执行va.exe并且希望读取数据的时候,va.exe一直向管道中写入数据,但是c#程序一直没有读取数据的机会。Sleep(100)时一直等待,直到缓冲区满,va.exe阻塞,c#才开始读取数据;而Sleep(1)的时候,缓冲区满的速度比较快,所以c#读取数据开始的就比较快。
但我现在想实现va.exe写数据的同时,c#可以读取数据,如何实现?
进程.StandardOutput.ReadLine就是流输出的每行字符串
string arguments = "va.exe "; 改为string commandLine = @"va.exe";
string arguments = "";即不通过cmd调用,会得到我想要的效果。但是,通过cmd调用,我可以在参数行使用管道对va.exe的结果进一步处理,现在只能在c#进行处理了。