先用代码说话吧:
private void tb_moviename_Leave(object sender, EventArgs e) //用户切换文本输入框时调用外部程序
{
ProcessStartInfo P_info = new ProcessStartInfo("WEBIE.exe");
P_info.WindowStyle = ProcessWindowStyle.Hidden;
P_info.CreateNoWindow = true;
P_info.Arguments = this.tb_moviename.Text.ToString();
P_info.RedirectStandardInput = true;
P_info.RedirectStandardOutput = true;
P_info.UseShellExecute = false;
Process p_inteligent = Process.Start(P_info);
this.textBox2.Text = this.textBox2.Text = p_inteligent.StandardOutput.ReadToEnd();//在另一个文本框中显示外部程序执行结果(如果没有这一句,则用户感觉不到停顿)
}我的问题:
在这个函数执行的时候,觉得有几秒钟的停顿,检查是因为最后一句代码导致,但是我需要得到外部程序执行的结果,请教一下专家,如何解决这个问题,让用户不感觉到停顿?
同时也想问一下,如何让启动的这个进程不停的监听用户的输入并处理?
private void tb_moviename_Leave(object sender, EventArgs e) //用户切换文本输入框时调用外部程序
{
ProcessStartInfo P_info = new ProcessStartInfo("WEBIE.exe");
P_info.WindowStyle = ProcessWindowStyle.Hidden;
P_info.CreateNoWindow = true;
P_info.Arguments = this.tb_moviename.Text.ToString();
P_info.RedirectStandardInput = true;
P_info.RedirectStandardOutput = true;
P_info.UseShellExecute = false;
Process p_inteligent = Process.Start(P_info);
this.textBox2.Text = this.textBox2.Text = p_inteligent.StandardOutput.ReadToEnd();//在另一个文本框中显示外部程序执行结果(如果没有这一句,则用户感觉不到停顿)
}我的问题:
在这个函数执行的时候,觉得有几秒钟的停顿,检查是因为最后一句代码导致,但是我需要得到外部程序执行的结果,请教一下专家,如何解决这个问题,让用户不感觉到停顿?
同时也想问一下,如何让启动的这个进程不停的监听用户的输入并处理?
这个this.textBox2.Text = this.textBox2.Text = p_inteligent.StandardOutput.ReadToEnd();可能耗时太久,出现界面假死~~
监控文本的修改可以用事件TextChanged,加载个函数就行了