6
今天我遇到了這個問題,花了我相當長的一段時間才弄明白。我從IIS內部啓動一個進程,重定向它的標準輸出和錯誤輸出,所以當進程退出時,我可以用它生成一個日誌。我的機器上的所有內容都運行良好,但發佈後卻不太好。重定向輸出相對較大時啓動進程掛起
這個過程本來應該工作一段時間,然後退出,但它不會。它只是停止響應,持有插座等資源。經過一段時間後,我能夠找出問題的原因:生成的日誌過大。在運行過程中評論Console.WriteLine
後,一切正常。
只是爲了澄清我是如何開始的過程:
Process process = new Process();
process.StartInfo.FileName = path;
process.StartInfo.Arguments = arguments;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.EnableRaisingEvents = true;
process.Exited += Process_Exited;
process.Start();
我如何處理它的退出:
private static void Process_Exited(object sender, EventArgs e)
{
Process process = (Process)sender;
File.WriteAllText(path, process.StandardOutput.ReadToEnd() +
"\r\nEXCEPTIONS\r\n" + process.StandardError.ReadToEnd());
}
即使我已經知道如何解決它,我還是喜歡知道發生了什麼事以及爲什麼,因爲我必須有一種方法來創建一個儘可能大的日誌。
我相信的確是發生了什麼!答案在文件中,對我很恥辱。謝謝回覆! –