2012-04-23 134 views
0

尝试调用“StandardOutput.ReadLine()”时应用程序挂起。应用程序冻结在“StandardOutput.ReadLine()”上。

代码:

ProcessStartInfo startInfo = new ProcessStartInfo("c:\\windows\\system32\\myTesting.exe"); 
      String s = " "; 

      startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
      startInfo.CreateNoWindow = true; 
      startInfo.RedirectStandardInput = true; 
      startInfo.RedirectStandardOutput = true; 
      startInfo.UseShellExecute = false; 
      Process p = Process.Start(startInfo); 
      p.StandardInput.WriteLine("list volume\n"); 
      String f = ""; 

      while (!p.StandardOutput.EndOfStream) 
       { 
        s = p.StandardOutput.ReadLine(); 
       } 

“死锁例外” 误差有时会发生,但并非总是如此。

+0

http://stackoverflow.com/questions/2767496/standardoutput-endofstream-hangs – 2012-04-23 12:56:48

回答

0

perhabs the wihle is the problem。刚刚尝试这一点:

// Create the child process. 
Process p = new Process(); 

// Redirect the output stream of the child process. 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardOutput = true; 

//setting the application path 
p.StartInfo.FileName = "Write500Lines.exe"; 
p.Start(); 

// Do not wait for the child process to exit before 
// reading to the end of its redirected stream. 
// Read the output stream first and then wait. 
string output = p.StandardOutput.ReadToEnd(); 
p.WaitForExit(); 
+0

您可以包括一些叙述说明你的代码,所以OP知道你做了什么,为什么它是一个答案他们的问题? – 2012-04-24 06:55:57