2016-10-09 92 views
-1

我需要問一個問題,我真的無法在互聯網上找到..我正在使用進程在我的c#應用程序中打開cmd ..我需要傳遞一些命令,但每個命令後,我需要確保該命令完成,所以我可以繼續其他的!...怎麼可能與System.Diagnostics程序......這是我的代碼,我試過..終端完成後,繼續執行某個命令

var startInfo = new ProcessStartInfo 
     { 
      FileName = "cmd.exe", 
      RedirectStandardInput = true, 
      RedirectStandardOutput = true, 
      UseShellExecute = false, 
      CreateNoWindow = false, 
      WorkingDirectory = @"E:/Visual Studio 2013/" + project_Name + "/packages/NUnit.ConsoleRunner.3.4.1/tools" 
     }; 

     var process = new Process { StartInfo = startInfo }; 

     process.Start(); 
     process.StandardInput.WriteLine("nunit3-console.exe E:/Debug/Report_Testing.dll"); 


     process.WaitForExit();  

等待退出這裏無限掛起,我無法通過這行代碼。 這有什麼解決方案!?

回答

0

嘗試添加選項/c nunit3-console.exe E:/Debug/Report_Testing.dll

現在,它會運行cmd並且命令後提示符將保持活動狀態。 WaitForExit正在等待cmd完成,它永遠不會。

+0

我無法理解你Uno對不起,我想知道命令什麼時候結束......選項/ k有什麼作用?你還希望我把它添加在writeline行? –

+0

@ OmarEl-elamy你的過程啓動'cmq',而不是nunit亞軍,所以它被連接到那個終止。如果你想在你的代碼中關閉它,你應該將'exit'發送到命令行,但我認爲這不會很優雅。 –

+0

測試運行器作爲cmd的**子**運行,所以即使跑步者退出,父母也不會。 –

-1

我已經成功地得到了解決方案:

我已經添加到了我的WriteLine命令,並改變了它是這樣的:

 process.StandardInput.WriteLine("nunit3-console.exe E:/Debug/Report_Testing.dll" + "&" +"exit"); 

//然後使用等待退出 process.WaitForExit();

通過這我確保命令執行。

+0

這真的很討厭,我會嘗試執行一次命令。 – user4388177

+0

一次性命令如何?我只想完成它然後退出? –