Czy jest jednak tak, aby przekierować standardowe wyjście zrodził proces i uchwycić go jako dzieje. Wszystko, co widziałem, po prostu robi ReadToEnd po zakończeniu procesu. Chciałbym móc uzyskać dane wyjściowe w trakcie drukowania.C# uzyskać dane wyjściowe procesu podczas pracy
Edit:
private void ConvertToMPEG()
{
// Start the child process.
Process p = new Process();
// Redirect the output stream of the child process.
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
//Setup filename and arguments
p.StartInfo.Arguments = String.Format("-y -i \"{0}\" -target ntsc-dvd -sameq -s 720x480 \"{1}\"", tempDir + "out.avi", tempDir + "out.mpg");
p.StartInfo.FileName = "ffmpeg.exe";
//Handle data received
p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
p.Start();
}
void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
Debug.WriteLine(e.Data);
}
Tak, a ponadto należy ustawić opcję 'RedirectStandardOutput' na wartość true, aby działała. – vcsjones
@vcsjones: wystarczy wkręcić dodatkowy wpis. – Tigran
Jak w odpowiedzi [tutaj] (http://stackoverflow.com/a/3642517/74757). –