目前手里有些处理数据的 python 脚本需要通过 .net 进行整合, 数据量一般都比较大,需要异步获取控制台信息。
下面的程序调用 ping 命令没问题,可以异步获取信息,但是调用 python 脚本就不行,非要等到执行完了才能获取信息(python 通过 print 和 sys.stdout.write 标准输出)
有没做过类型项目的同学,帮忙看一下,纠结几天了。
private void btnCall_Click(object sender, EventArgs e)
{
using (Process process = new System.Diagnostics.Process())
{
//process.StartInfo.FileName = "ping";
//process.StartInfo.Arguments = "127.0.0.1 -t";
process.StartInfo.FileName = @"C:\Python24\python.exe";
process.StartInfo.Arguments = @"E:\Script\ProcessData.py D:\Data";
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
process.BeginOutputReadLine();
process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived);
}
}
private void process_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
if (!string.IsNullOrEmpty(e.Data))
this.AppendText(e.Data + Environment.NewLine);
}
public delegate void AppendTextCallback(string text);
public void AppendText(string text)
{
if (this.txtMsg.InvokeRequired)
{
AppendTextCallback d = new AppendTextCallback(AppendText);
this.txtMsg.Invoke(d, text);
}
else
{
this.txtMsg.AppendText(text);
}
}
大侠 我目前正进行一个类似的项目,不过是数据流向是相反的, 我要在Python中获得c#的控制台信息 怎么做啊?
大神,请问这个如何在WPF上实习上诉功能呢?