Считать поток из командной строки
Всем привет! Пишу GUI на C#(winforms),которое работает c программатором Jlink.Не получается считать ответ из командной строки при команде b_Send_Click.В Textbox ничего не отображается. Подскажите пжлст,что не так?
public partial class MainForm : Form
{
Thread thr;
Process prc;
System.Timers.Timer tm;
StreamWriter prc_input;
public MainForm()
{
InitializeComponent();
tm = new System.Timers.Timer(500);
tm.Elapsed += Tm_Elapsed;
}
private void Tm_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
Invoke((MethodInvoker)delegate {
t_Response.Lines = buf.ToArray();
Update();
});
}
private void RunCommand()
{
prc = new Process();
ProcessStartInfo prc_info = new ProcessStartInfo()
{
FileName = @"C:\Program Files\SEGGER\JLink\JLink.exe",
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
RedirectStandardInput = true
};
prc.StartInfo = prc_info;
prc.ErrorDataReceived += Prc_ErrorDataReceived;
prc.OutputDataReceived += Prc_OutputDataReceived;
prc.Start();
prc.StandardInput.WriteLine("connect");
prc.StandardInput.WriteLine("NRF52811_XXAA");
prc.StandardInput.WriteLine("SWD");
prc.StandardInput.WriteLine("4000");
prc.BeginOutputReadLine();
prc.BeginErrorReadLine();
prc_input = prc.StandardInput;
prc.WaitForExit();
}
private void b_Start_Click(object sender, EventArgs e)
{
tm.Start();
thr = new Thread(RunCommand);
thr.Start();
b_Send.Enabled = true;
}
List<string> buf = new List<string>();
private void Prc_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
buf.Add(e.Data);
}
private void Prc_ErrorDataReceived(object sender, DataReceivedEventArgs e)
{
buf.Add(e.Data);
}
private void b_Send_Click(object sender, EventArgs e)
{
prc_input.WriteLine(t_Command.Text);
}
private void b_End_Click(object sender, EventArgs e)
{
b_Send.Enabled = false;
tm.Stop();
prc.Kill();
}
}