Я столкнулся с интересной проблемой.
C # позволяет повторно использовать ресурс процесса (согласно MSDN) - поэтому я вызываю экземплярный метод Start () после завершения процесса:
Process p = new Process();
// init
p.Start();
И спустя некоторое время:
p.Kill();
// not important
p.Start();
Когда у меня есть поток, выполняющий синхронизацию, все выглядит нормально - вывод читается после первого и второго вызова Start ().
Теперь самое смешное.Когда я использую асинхронное чтение (все правильно инициализировано):
p.BeginOutputReadLine();
вывод читается только после первого вызова Start ().После запуска второго вызова без перенаправления любого вывода.
Я также попытался еще раз вызвать Отмена и Начать:
p.CancelOutputRead();
p.Kill();
// not important
p.Start();
p.BeginOutputReadLine();
с тем же результатом.
Некоторыесведения о машине: Win 7 Ultimate x86 SP1 (CPU также x86), протестировано на .NET 2.0 / 3.0, VS 2008
Вопрос в том, является ли это какой-то структурной ошибкой или моим неправильным пониманием определения Process.Start ("Запускает (или повторно использует) ресурс процесса, указанный в свойстве StartInfo этого компонента Process, и связывает его с компонентом. ")?Любая помощь очень ценится.
Я полагаю, что решение заключается в воссоздании объекта процесса, но, вероятно, будет медленнее.