[英]Run commands and wait for completion in c#
我需要在我的c#程序中執行此操作。
Process process = LaunchCommandWindow("Special args and environment set")
process.StandardInput.WriteLine("cmd1");
process.StandardInput.WriteLine("cmd2");
//Parse logs
using (Streamreader sr = new ())
{ etc etc..}
我的命令正確執行,但問題是Parse日志代碼不等待cmd1和cmd2執行完成。 我不能打電話給退出和處理。 waitforexit因為在解析日志后,我有更多的命令要執行。
以下是如何設置流程啟動信息。 LaunchCommandWindow()
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = Path.Combine(Environment.SystemDirectory, "cmd.exe");
startInfo.Arguments = "/K " + newEnvironmentArgs;
startInfo.UseShellExecute = false;
startInfo.RedirectStandardInput = true;
Process process = new Process();
process.StartInfo = startInfo;
process.Start();
return process;
如何獲取解析日志代碼以等待cmd2完成?
謝謝。
如果“cmd2”將完成寫入標准輸出流,您可以監聽標准輸出,直到看到該事件,然后從那里進行處理。
創建一個新線程來運行任務。
使用BackgroundWorker
。
完成后,它會引發一個事件(在您的主線程中),您可以從該事件繼續運行。
這將阻止您的程序掛起,如果還有其他工作要做,它可以允許您在另一個線程運行時執行此操作。
- - -編輯 - - -
經過進一步的研究,以下是對其余部分的思考:如果要讀取輸出,則必須將RedirectStandardOutput
設置為true。
如果你沒有運行在同一窗口中兩個命令,你可以調用process.WaitForExit(int)
其中int是等待的毫秒數,然后啟動一個新的進程(或process
與新參數)火CMD2 。
我認為Process.WaitForExit()方法正是您所需要的。 還有Process.HasExited屬性。
對於啟動使用類似“cmd / C cmd1&cmd2”的東西
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.