实时Zedgraph没有回应

时间:2014-03-20 10:02:43

标签: c# user-interface focus real-time zedgraph

当我将焦点从它改为另一个节目时,我的实时不再响应。即它被困住了。

请您为我提出一个可能的原因和/或解决方案。

1 个答案:

答案 0 :(得分:0)

由于您的 GUI线程(背景)没有处理,当它失去焦点时,您的Zedgraph不会更新。如果你在ZedGraph上移动一个窗口,它就不会被重新绘制。相反,你会看到焦点窗口。这是我的第一次猜测。由于我不了解您的编程语言和代码,因此我将在C#中展示原理。

timer或新数据事件会调用函数RealTimeGraph。线索是除了GUI线程之外的额外线程调用RealTimeGraphSystems.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);

我希望向您展示这一概念的优势。有关详细信息,请编辑相关的问题代码。