当前位置:编程学习 > C#/ASP.NET >>

c# 程序发布后 proccess 重定向输出 无值,调试状态一切正常!!求解!!

编译的程序在我电脑上调试时候一切正常,发布后,别人电脑安装后运行不正常,重定向输出无值,求解!!
以下为部分代码求大侠指导!!
string teqcComLine0 = teqcPath;
string teqcComLine1 = "teqc.exe" + " +qc " + teqcPath + "\\" + Ofname;                   
Process teqcProcess = new Process();                  
teqcProcess.StartInfo.FileName = "cmd.exe ";                     
teqcProcess.StartInfo.UseShellExecute = false;                   
teqcProcess.StartInfo.CreateNoWindow = true;                   
teqcProcess.StartInfo.RedirectStandardInput = true;                   
teqcProcess.StartInfo.RedirectStandardOutput = true;                   
teqcProcess.StartInfo.RedirectStandardError = true;                   
teqcProcess.Start();                   
teqcProcess.StandardInput.WriteLine(teqcComLine0);                     
teqcProcess.StandardInput.WriteLine(teqcComLine1);                     
teqcProcess.StandardInput.WriteLine("exit");                                       
while (!teqcProcess.StandardOutput.EndOfStream)                    
{                       
   string temp = teqcProcess.StandardOutput.ReadLine();                        
   if (temp.Contains("SUM"))                        
    {                            
     teqcCheck = temp;                            
     break;                        
    }                    
}                    
string temp1 = teqcProcess.StandardOutput.ReadToEnd();                   
teqcProcess.WaitForExit();                  
teqcProcess.Close();                    
teqcCheck = teqcCheck.Substring(58, 3).Trim() + "%"; 调试 发布 dos process重定向输出 --------------------编程问答-------------------- 在不能正常运行的电脑上面手动执行下这个命令,然后看输出 --------------------编程问答-------------------- 手动输出没问题,因为是输出到文件,我这因为使用Process重定向输出,这里有问题,异常输出 teqcCheck值为空,但是我在
while (!teqcProcess.StandardOutput.EndOfStream)                    
{                       
   string temp = teqcProcess.StandardOutput.ReadLine(); 
  MessageBox.Show(teqcProcess.StandardOutput.ReadLine());                       
   if (temp.Contains("SUM"))                        
    {                            
     teqcCheck = temp;                            
     break;                        
    }                    

添加了一个,MessageBox.Show(teqcProcess.StandardOutput.ReadLine());
别人电脑显示发送的命令,但是重定向输出的流没有,为什么呢? 打包输出时,依赖性有问题么? --------------------编程问答-------------------- 编译的时候 选x86试试·· --------------------编程问答-------------------- 一直都是用x86的,刚才有测试了,问题还是出在重定向输出 --------------------编程问答-------------------- while (!teqcProcess.StandardOutput.EndOfStream) 你这里已经读到了流的最后,下面的string temp1 = teqcProcess.StandardOutput.ReadToEnd(); 这个肯定输出为空了 --------------------编程问答-------------------- 是不是需要异步读取? --------------------编程问答--------------------
引用 5 楼 zxz414644665 的回复:
while (!teqcProcess.StandardOutput.EndOfStream) 你这里已经读到了流的最后,下面的string temp1 = teqcProcess.StandardOutput.ReadToEnd(); 这个肯定输出为空了

if (temp.Contains("SUM"))                        
    {                            
     teqcCheck = temp;                            
     break;                        
    }  
已经给teqcCheck 赋值了,这个程序在我的电脑上调试都正常运行,发布后另外的电脑,异常提示值为空,我也经过多次测试了,确定这里出问题了!
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,