我要实现的是一个绘图窗口,该窗口不断更新(随着我的数据文件不断变化),一直保持打开状态,直到我手动关闭。
我的gnuplot脚本结尾为:
...
pause 0.5
reread
如果我从命令行使用此脚本调用gnuplot,则它会按预期运行。
但是,如果我通过C#调用gnuplot ,并将相同的脚本作为参数传递,则绘图窗口打开0.5 s,紧接着关闭。 我使用以下代码来实现这一点:
Process plotProcess = new Process();
plotProcess.StartInfo.FileName = @"""C:\Program Files\gnuplot\bin\gnuplot.exe""";
plotProcess.StartInfo.UseShellExecute = false;
plotProcess.StartInfo.RedirectStandardInput = true;
plotProcess.StartInfo.CreateNoWindow = true;
plotProcess.Start();
StreamWriter sw = plotProcess.StandardInput;
String strInputText = @"GNUPLOTSCRIPT;pause 0.5;reread";
sw.WriteLine(strInputText);
sw.Flush();
sw.Close();
鉴于gnuplot脚本可从命令行运行,因此我想我没有为 plotProcess 调用正确的扩展方法。为了解决这个问题,我尝试了以下操作(不同顺序)
...
plotProcess.WaitForExit();
//sw.Flush();
//sw.Close();
这无济于事,或者完全冻结了我的进程,直到我不得不从任务管理器中将其杀死为止。
我很高兴有任何建议。
答案 0 :(得分:0)
您是否尝试将gnuplot命令添加“ -persist”或更短的“ -p”标志? 即
plotProcess.StartInfo.FileName = @"""C:\Program Files\gnuplot\bin\gnuplot.exe -persist""";
这应该告诉gnuplot即使脚本完成后也要保持绘图窗口打开。另外,您可以将gnuplot脚本中的输出设置为持久性。参见例如here获取更多选项。