У меня проблема с чтением вывода одного процесса асинхронно в С#. Я нашел некоторые другие подобные вопросы на этом сайте, но они действительно не помогают мне. Вот что я делаю:
- Сделать новый процесс
- Установить startinfo -FileName, Аргументы, CreateNoWindow (true), UseShellExecute (false), RedirectStandardOutput (true)
- Добавить обработчик событий в OutputDataReceived;
- Запустить процесс, BeginOutputReadLine, а затем WaitForExit().
Он отлично работает, но вывод запущенного процесса записывает некоторые проценты (%
), которые я хочу получить, но я не могу, так как мой код читается по строкам, а проценты не отображаются.
Пример:
%0,%1...%100
Finished.
Мой вывод:
%0
Finished.
Вот текущий код моей программы:
StringBuilder sBuilder = new StringBuilder();
static void proc_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
sBuilder.AppendLine(e.Data);
}
static void CommandExecutor()
{
Process process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = /*path of the program*/,
Arguments = /*arguments*/,
CreateNoWindow = true,
UseShellExecute = false,
WindowStyle = ProcessWindowStyle.Hidden,
RedirectStandardOutput = true
}
};
process.OutputDataReceived += new DataReceivedEventHandler(proc_OutputDataReceived);
process.Start();
process.BeginOutputReadLine();
process.WaitForExit();
}