Я делаю приложение, которое запускает ping и отображает результат в текстовом поле. Когда я нажимаю кнопку запуска ping, графический интерфейс зависает, и в текстовое поле ничего не выводится. Почему этот GUI зависает понятно, GUI ждет завершения работы консольного приложения. Не понимаю, как тогда реализовать вывод в текстовое поле из консольного приложения.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
namespace WindowsFormsApp4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Class1 ping = new Class1();
ping.startPing();
string output = ping.output();
richTextBox1.AppendText(output + "\n");
richTextBox1.Update();
}
static private void richTextBox1_TextChanged(object sender, EventArgs e)
{
}
}
class Class1
{
private Process p = new Process();
public void startPing()
{
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "c:/windows/system32/ping";
p.StartInfo.Arguments = "8.8.8.8 -t";
p.Start();
}
public string output()
{
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
return output;
}
}
}
p.WaitForExit();
? Предлагает ли документация альтернативный подход? docs.microsoft. com/en-us/dotnet/api/ - person mjwills   schedule 22.03.2019p.Exited
(не забудьте его разрешить -p.EnableRaisingEvents = true;
) и сбросьтеp.WaitForExit();
- person Dmitry Bychenko   schedule 22.03.2019