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());
}
即使我已经知道如何解决它,我还是喜欢知道发生了什么事以及为什么,因为我必须有一种方法来创建一个尽可能大的日志。
我相信的确是发生了什么!答案在文件中,对我很耻辱。谢谢回复! –