Получение двоичных данных из StandardOutput - PullRequest
2 голосов
/ 24 июля 2011

Я запускаю процесс с кодом, подобным приведенному ниже:

// some of the flags are not needed
process.StartInfo.CreateNoWindow = true;
process.StartInfo.ErrorDialog = false;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardOutput = true;
process.EnableRaisingEvents = true;
process.OutputDataReceived += process_OutputDataReceived;
process.ErrorDataReceived += process_OutputDataReceived;
process.Start();
process.BeginErrorReadLine();
process.BeginOutputReadLine();

void process_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
}

void process_ErrorDataReceived(object sender, DataReceivedEventArgs e)
{
}

Проблема, с которой я сталкиваюсь, состоит в том, что объект DataReceivedEventArgs имеет свойство Data, которое является строкой.Мне нужно прочитать стандартные выходные данные, так как это двоичные данные.Я предполагаю, что нет способа вернуть строковые данные в соответствующие двоичные данные, поэтому любые предложения по использованию другого метода для получения двоичных данных были бы хорошими.

1 Ответ

2 голосов
/ 04 ноября 2011

Брэдли Грейнджер, который прокомментировал вопрос, был прав.Обработчики событий не поддерживают извлечение двоичных данных из стандартного out.Пришлось переключиться на использование основного цикла и вытащить данные из стандарта, используя функции чтения.

...