2014-10-20 110 views
-1

我需要一些幫助。我有一個外部應用程序(test.exe與一些dll文件)。在cmd我有這樣的運行命令:test.exe parmeters並獲取大量的數據與一些需要的信息。輸出數據不完整

我有寫應用程序執行此外部應用程序和輸出不完全,因爲我用cmd執行它。這只是一些第一線。我不介意什麼是錯的。請幫忙

using(var process = new Process { 
    StartInfo = new ProcessStartInfo { 
     UseShellExecute = false, 
     RedirectStandardOutput = true, 
     RedirectStandardError = true, 
     FileName = orPath, 
     Arguments = parmeters.ToString(), 
    } 
}) { 
    process.Start(); 
    process.WaitForExit(); 
    string result = ""; 
    string standard_output; 
    while ((standard_output = process.StandardOutput.ReadLine()) != null) { 
     if (standard_output.Contains("xx")) 
      result = standard_output.Substring(standard_output.Length - 15); 
    } 
+1

您的問題並不完全清楚,您可以嘗試重新解釋您的問題嗎?什麼輸出不完全,你期望什麼? 'argBuilder'中有什麼? – 2014-10-20 09:16:06

+0

@BerndLinde編輯。 – 2014-10-20 09:41:14

回答

0

沒有一個簡明但完整的代碼示例,可靠地演示了這個問題,很難說肯定。但是,如果您嘗試在之後嘗試使用StandardOutput ,則您已經調用WaitForExit(),但並不是所有輸出都已被緩衝並可用,這並不令我感到意外。

也許試試這個來代替:

 process.Start(); 
     string result = ""; 
     string standard_output; 
     while ((standard_output = process.StandardOutput.ReadLine()) 
           != null) 
     { 
      if (standard_output.Contains("xx")) 
       result = standard_output.Substring(
         standard_output.Length - 15); 
     } 

請注意,我只是去掉調用WaitForExit()。讀取StandardOutput TextReader直到它返回null將與等待進程結束具有相同的效果,假設一個正常的進程(即在進程退出之前stdout沒有關閉)。