我正在处理一个时间敏感的问题,执行所需的时间至关重要。但现在我遇到了一个问题,StandardOutput.ReadToEnd();花费更多时间返回结果,从而增加执行时间。这是我代码的一部分。为了显示延迟,我在3个地方打印了时间。时间在代码下方提到。
tsw.WriteLine("Time 1 :"+DateTime.UtcNow);
System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);
/*REDIRECTING THE STANDARD INPUT TO Process.StandardOutput StreamReader.*/
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
/*REDIRECTING THE STANDARD INPUT TO Process.StandardOutput StreamReader.*/
/*CREATING A PROCESS, ASSIGN ITS PROCESSINFO AND START IT*/
proc.StartInfo = procStartInfo;
proc.Start();
/*CREATING A PROCESS, ASSIGN ITS PROCESSINFO AND START IT*/
tsw.WriteLine("Time 2 :" + DateTime.UtcNow);
/* GETTING RESULT INTO A STRING*/
result = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
tsw.WriteLine("Time 3 :" + DateTime.UtcNow);
结果是
Time 1 :1/20/2016 6:37:57 AM
Time 2 :1/20/2016 6:37:57 AM
Time 3 :1/20/2016 6:38:02 AM
正如我们所见,proc.StandardOutput.ReadToEnd();大约需要5秒钟才能返回并以字符串形式存储。这是正常的还是我的代码有问题?非常感谢您的帮助。