Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Вот код, который я проверил для работы. Я использую его для порождения MSBuild и слушания его вывода:
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.OutputDataReceived += (sender, args) => Console.WriteLine("received output: {0}", args.Data);
process.Start();
process.BeginOutputReadLine();
Похоже, что две из Ваших строк не работают. Вы запускаете процесс перед установкой обработчика событий для получения вывода. Возможно, что процесс только заканчивается, прежде чем обработчик событий добавляется.
Переключите строки как так.
p.OutputDataReceived += ...
p.Start();
Необходимо назвать p. Начните () на самом деле выполнять процесс после установки StartInfo. Как это, Ваша функция, вероятно, подвешивает на WaitForExit () вызов, потому что процесс на самом деле никогда не запускался.