我在我的代碼中調用了一個批處理文件並給出了某些參數。這個批處理文件調用另一個批處理文件等。整個過程大約需要45分鐘才能完成。我還需要等待批處理文件完成,然後再繼續執行其餘的代碼(清理批處理文件等)。需要很長時間的運行過程
我的問題是,雖然我已經嘗試了幾個不同的東西,但我無法獲得批處理文件,既要完成其運行,也要將其輸出寫入日誌文件。
這裏是我做了什麼讓批處理文件來完成其運行:
Process process = new Process();
process.StartInfo.WorkingDirectory = Path.GetDirectoryName(filename);
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = false;
process.StartInfo.FileName = filename;
process.Start();
process.WaitForExit();
在嘗試啓用日誌記錄我已經嘗試了不少的東西。這只是最新的嘗試。
Process process = new Process();
process.StartInfo.WorkingDirectory = Path.GetDirectoryName(filename);
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.FileName = filename;
process.Start();
StreamReader sr = process.StandardOutput;
StreamWriter sw = new StreamWriter(exelocation + @"Logs\" + version + "\\" + outputname + ".txt");
while (!process.HasExited)
{
sw.Write(sr.ReadToEnd());
}
此代碼基本上它使一個微不足道的部分首批文件中的一個,並停在那裏。批處理文件在一分鐘之內運行。我不明白爲什麼會發生這種情況。如果標準輸出沒有被重定向並且窗口被創建,它會完美運行,但如果窗口被隱藏並且標準輸出被重定向,它什麼也不做?
把一個破發點線'sw.Write(sr.ReadToEnd());',看看是否過線完成執行並進入下一個循環 – 2011-02-28 16:38:11