2017-03-22 60 views
1

以下情形:檢測到Console.ReadLine()

我有下面的代碼控制檯應用程序:

static void Main(string[] args) 
{ 
     // Some code. 
     Console.WriteLine("Done"); 
     Console.ReadLine(); 
} 

的成功構建應用程序,並 「將Test.exe」 產生。

現在我有另一個控制檯應用程序執行生成的exe。

static void Main(string[] args) 
     { 
      var processStartInfo = new ProcessStartInfo("Test.exe") 
      { 
       UseShellExecute = false, 
       RedirectStandardOutput = true 
      }; 

     // Setup the process 
     process = new Process { StartInfo = processStartInfo, EnableRaisingEvents = true }; 

     process.OutputDataReceived += ProcessOnOutputDataReceived; 
     process.Start(); 
     process.BeginOutputReadLine(); 
     // Detect here if application is completed. 
     } 

     Console.ReadLine(); 
    } 

    private static void ProcessOnOutputDataReceived(object sender, DataReceivedEventArgs dataReceivedEventArgs) 
    { 
     Console.WriteLine(dataReceivedEventArgs.Data); 
    } 

當我執行上面的代碼時,它調用「將Test.exe」的「將Test.exe」和輸出顯示在當前進程的控制檯窗口。

「Test.exe」在「Console.ReadLine()」等待輸入,當前進程等待「Test.exe」完成。

是否有可能檢測到「Test.exe」是否正在等待當前進程中的輸入?

+0

http://stackoverflow.com/q/40421394/1132334的副本,但這還沒有回答 – dlatikay

+0

您可以只查找完成消息,是嗎? – itsme86

+1

http://stackoverflow.com/a/14510536/1132334:在這種情況下調查'ThreadWaitReason'可能值得一試 – dlatikay

回答

0

有沒有辦法同步調用OutputReadLine()?如果是的話,那麼你的應用程序將阻塞,直到test.exe完成,然後纔會執行你的下一行代碼。將不需要檢查。