Как породить процесс и получить его STDOUT в.NET? [дубликат]

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
133
задан Danny Beckett 13 May 2015 в 23:40
поделиться

3 ответа

Вот код, который я проверил для работы. Я использую его для порождения MSBuild и слушания его вывода:

process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.OutputDataReceived += (sender, args) => Console.WriteLine("received output: {0}", args.Data);
process.Start();
process.BeginOutputReadLine();
153
ответ дан 24 November 2019 в 00:01
поделиться

Похоже, что две из Ваших строк не работают. Вы запускаете процесс перед установкой обработчика событий для получения вывода. Возможно, что процесс только заканчивается, прежде чем обработчик событий добавляется.

Переключите строки как так.

p.OutputDataReceived += ...
p.Start();        
20
ответ дан 24 November 2019 в 00:01
поделиться

Необходимо назвать p. Начните () на самом деле выполнять процесс после установки StartInfo. Как это, Ваша функция, вероятно, подвешивает на WaitForExit () вызов, потому что процесс на самом деле никогда не запускался.

3
ответ дан 24 November 2019 в 00:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: