Mam aplikację, która wywołuje inny proces w oknie poleceń, a proces ten aktualizuje statystyki, które wyświetlają się w oknie konsoli. Myślałem, że to dość prosta operacja, ale nie mogę tego zmusić do działania. Czy czegoś brakuje?ProcessInfo and RedirectStandardOutput
string assemblyLocation = Assembly.GetExecutingAssembly().Location;
Process process = new Process
{
ProcessStart =
{
RedirectStandardOutput = true,
UseShellExecute = false,
WindowStyle = ProcessWindowStyle.Hidden,
Arguments = arg,
FileName = assemblyLocation.Substring(0, assemblyLocation.LastIndexOf("\\")) + "\\ffmpeg.exe",
CreateNoWindow = true
}
};
process.Start();
Console.WriteLine(process.StandardOutput.ReadToEnd());
process.WaitForExit();
Idealnie chciałbym, aby zmiany w wynikach w tym procesie zostały trafione lub dane przychodzą do czytelnika, że otrzymuję od niego zdarzenia.
Każda pomoc byłaby świetna, wydaje mi się, że to pytanie dla początkujących, ale wydaje się, że czegoś brakuje.
masz na myśli inny wątek lub inny proces? mogę uruchomić proces z wiersza cmd, a wynik wygląda dobrze. –
Miałem na myśli inny proces niż ten, który próbujesz. W przypadku, z jakim się spotkałem, kiedy przekierowałem standardowe wyjście, proces nie wyczyściłby jego bufora wyjściowego po uruchomieniu w ten sposób, a więc strumień byłby dostępny dopiero na końcu. To może, ale nie musi być twój problem. Zobacz mój przykład kodu, jak sobie z tym poradzić w moich własnych aplikacjach. – patjbs
Mogę to zrobić z większością aplikacji konsolowych, ale nie z PowerShell. jakieś pomysły? –