当我将焦点从它改为另一个节目时,我的实时不再响应。即它被困住了。
请您为我提出一个可能的原因和/或解决方案。
答案 0 :(得分:0)
由于您的 GUI线程(背景)没有处理,当它失去焦点时,您的Zedgraph不会更新。如果你在ZedGraph上移动一个窗口,它就不会被重新绘制。相反,你会看到焦点窗口。这是我的第一次猜测。由于我不了解您的编程语言和代码,因此我将在C#中展示原理。
timer或新数据事件会调用函数RealTimeGraph
。线索是除了GUI线程之外的额外线程调用RealTimeGraph
。 Systems.Timers.Timer
类已经为您完成了这项工作。使用哪个Timer或BackgroundWorker取决于您的应用程序。
System.Timers.Timer timer = new System.Timers.Timer();
timer.Elapsed += new ElapsedEventHandler(RealTimeGraph)
Public void RealTimeGraph(object sender, EventArgs e)
{
if (this.InvokeRequired)
{
PeriodicUpdateHandler update = new PeriodicUpdateHandler(this.RealTimeGraph);
this.BeginInvoke(periodisches_update,sender, e);
}
else
{
Update(); // check if new data for ZedGraph is available
ZedGraph.GraphPane.AxisChange(); // optional, if ZedGraphAxis has to be recomputed
ZedGraph.control.Invalidate(); // optional
ZedGraph.control.Refresh(); // now the update is visible
}
}
另外,如果再次关注应用程序,调用RealTimeGraph
可能会很方便。只需添加一个新的焦点事件处理程序
this.Enter += new System.EventHandler(this.RealTimeGraph);
我希望向您展示这一概念的优势。有关详细信息,请编辑相关的问题代码。