在C#中我開始了需要2-3個小時才能完成的第三方應用程序。我需要Process的輸出來實時寫入控制檯。我已經完成了來自微軟網站的BeginOutputReadLine()
和RedirectStandardOutput
的研究,但我的代碼仍然無法正常工作。C#實時顯示進程的輸出
目前我的代碼只顯示過程完成時的輸出。我不知道它出錯的地方。
static void Main(string[] args)
{
Process process;
process = new Process();
process.StartInfo.FileName = "C:\\ffmbc\\ffmbc.exe";
process.StartInfo.Arguments = "-i \\\\dssp-isi-t\\TMD\\B002C010_130520_R2R7.2398v5.mxf -an -vcodec libx264 -level 4.1 -preset veryslow -tune film -x264opts bluray-compat=1:weightp=0:bframes=3:nal-hrd=vbr:vbv-maxrate=40000:vbv-bufsize=30000:keyint=24:b-pyramid=strict:slices=4:aud=1:colorprim=bt709:transfer=bt709:colormatrix=bt709:sar=1/1:ref=4 -b 30M -bt 30M -threads 0 -pass 1 -y \\\\dss-isi-t\\MTPO_Transfer\\dbay\\B002C010_130520_R2R7.2398v5.mxf.h264";
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
process.StartInfo.RedirectStandardInput = true;
process.Start();
process.BeginOutputReadLine();
process.WaitForExit();
process.Close();
}
private static void OutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
string line;
line = (outLine.Data.ToString());
Console.WriteLine(line);
}
@Xeano不完全相同的問題,但是,是非常相似的。 – feralin
這很正常,當您重定向輸出時,該過程將切換到緩衝輸出。如果它不會吐出很多文本,那麼該緩衝區不足以導致它被刷新。如果你無法修復程序的代碼,你無能爲力。 –