У меня проблема в моем проекте. Я хочу запустить процесс 7z.exe (консольная версия). Я пробовал три разные вещи:
Ничего не работает. Он всегда «ждет» конца процесса, чтобы показать, что я хочу. У меня нет кода для размещения, просто если вы хотите, чтобы мой код содержал одну из вещей, перечисленных здесь. Спасибо.
Редактировать: Мой код:
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = true;
process.Start();
this.sr = process.StandardOutput;
while (!sr.EndOfStream)
{
String s = sr.ReadLine();
if (s != "")
{
System.Console.WriteLine(DateTime.Now + " - " + s);
}
}
Или
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.OutputDataReceived += new DataReceivedEventHandler(recieve);
process.StartInfo.CreateNoWindow = true;
process.Start();
process.BeginOutputReadLine();
process.WaitForExit();
public void recieve(object e, DataReceivedEventArgs outLine)
{
System.Console.WriteLine(DateTime.Now + " - " + outLine.Data);
}
Или
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
string output = p.StandardOutput.ReadToEnd();
process.WaitForExit();
Где «процесс» - это мой предварительно созданный процесс
Хорошо, я знаю, почему он не работает должным образом: 7z.exe - это ошибка: он отображает процент загрузки в консоли, и он отправляет информацию только после завершения текущего файла. В добыче например отлично работает :). Я буду искать другой способ использования функций 7z без 7z.exe (возможно, с 7za.exe или с какой-нибудь DLL). Спасибо всем. Чтобы ответить на вопрос, событие OuputDataRecced работает нормально!