Не уверен, что это может быть причиной проблемы, но, исходя из приведенного здесь кода, ваш ThreadProc
завершает работу до того, как объект Process
будет создан.Согласно документам OutputDataReceived , вы должны вызывать WaitForExit()
«Приложение, обрабатывающее асинхронный вывод, должно вызвать метод WaitForExit (), чтобы убедиться, что буфер вывода очищен».Исходя из этой строки, я бы предположил, что вы можете потерять некоторые данные, если вы этого не сделаете.
На несвязанной ноте Process
объекты реализуют IDisposable, поэтому я бы порекомендовал изменить ваш метод ThreadProc следующим образом (обратите внимание, я нездесь нет объявления proc, но, как вы говорите, вы запускаете несколько процессов, я предполагаю, что proc не является переменной-членом, и объявление было просто опущено в образце):
public void ThreadProc()
{
info.watch.Start();
using (var proc = InstantiateProcess())
{
proc.Start();
proc.BeginOutputReadLine();
proc.WaitForExit();
}
}