Это действительно вопрос о потоках, но я прошу конкретно решить мою текущую проблему с процессами.Process.StandardOutput поток к событиям
System.Diagnostics.Process предоставляет StandardOutput как поток. Я хочу слушать этот поток и обрабатывать его вывод за строкой. Очевидно, что нет прямой корреляции между входом и выходом, но давайте добавим немного искусственное требование, чтобы мы могли обрабатывать вывод «по строке».
Так что большинство примеров использования его выглядеть следующим образом:
using (Process process = Process.Start(start))
{
//
// Read in all the text from the process with the StreamReader.
//
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
Console.Write(result);
}
}
Который не имеет смысла, поскольку это не событийная и предполагает, что процесс живет достаточно долго, чтобы вернуть некоторые результаты. По событию, это не должно быть событие. Лямбда, обратный вызов, событие, что бы то ни было, я просто хочу получать уведомление, когда выводится целая строка, и я хочу, чтобы я смог завершить работу, когда закончил процесс.
По существу, я прошу только опросы потоков.
Благодаря
Вы посмотрели 'Process.OutputDataReceived'? –
Привет, Джон, просто отбросил назад, чтобы добавить комментарий, чтобы сказать, что я только что нашел OutputdataReceived. Есть ли ответ на обработку долгоживущего прерывистого потока, который не требует, чтобы он был полезным уведомляющим ... уведомлением? – Ian
Не уверен, что вы имеете в виду, если быть честным. Непонятно, что вы ищете вне OutputDataReceived. Обратите внимание, что вы можете просто поместить свой цикл в отдельный поток ... –