Вывод консольного приложения в winapp
У меня есть консольное приложение, которое подсчитывает процент вверх, и это занимает некоторое время, чтобы закончить.
Я могу вызвать и прочитать его вывод внутри winapplication, но внутри одной глобальной переменной, которая собирает все, пока работает консольное приложение, и после того, как все будет закончено, myvar наконец отобразит его содержимое. Практично, но не мило !
Я хочу видеть обновление вывода консоли в прямом эфире в моем приложении win !
Спасибо!
Что я уже пробовал:
void ComandExecute() { //if (label1.InvokeRequired) //I tried this but is getting skipped { string nl = "\r\n"; string vvvh = ""; Main.Text = ""; var processInfo = new ProcessStartInfo("console_app.exe", "output> " + str1); processInfo.CreateNoWindow = true; processInfo.UseShellExecute = false; processInfo.RedirectStandardError = true; processInfo.RedirectStandardOutput = true; var process = Process.Start(processInfo); //I tried here to obtain the output into my label but i get error01 //error01 says: //" Cross-thread operation not valid: Control 'label1' accessed from a thread other than the //thread it was created on. " process.OutputDataReceived += (object sender, DataReceivedEventArgs e) => { label1.Text += e.Data + nl; label1.Refresh(); //<< error at this line }; process.BeginOutputReadLine(); process.ErrorDataReceived += (object sender, DataReceivedEventArgs e) => vvvh += "error>>" + e.Data + nl; label1.Text += vvvh; label1.Refresh(); process.BeginErrorReadLine(); process.WaitForExit(); vvvh += "ExitCode: " + process.ExitCode + nl; process.Close(); Main.Text = vvvh; label1.Text = Main.Text; } }