【问题标题】:Oxyplot updating data after the end of methodOxyplot 在方法结束后更新数据
【发布时间】:2015-07-05 18:40:44
【问题描述】:

您能告诉我为什么图表在最后一次迭代后更新(i = 99)吗?

    private void music_play_button_Click(object sender, RoutedEventArgs e)
    {
        for (int i = 0; i < 100; i++)
        {
            (hr_plot.Model.Series[0] as LineSeries).Points[0] = new DataPoint(i, HRConstants.HRMin);
            (hr_plot.Model.Series[0] as LineSeries).Points[1] = new DataPoint(i, HRConstants.HRMax);
            System.Threading.Thread.Sleep(10);
            hr_plot.Model.InvalidatePlot(true);
        };
    }

图表应该在每次迭代后改变,而不是在整个循环之后。什么是正确的解决方案?

【问题讨论】:

    标签: c# wpf charts invalidation oxyplot


    【解决方案1】:

    Buttoneventhandler 在计算新数据点时阻塞 UI 线程。因此,图表只有在事件处理程序完成后才有机会

    解决方案: 您可以在事件处理程序中创建一个新的调度程序计时器,并在每个 timerTick 上计算一次迭代

    【讨论】:

    • 谢谢,它帮助我澄清了一些事情。但是,现在我得到草率的图表更新。正如我所读到的,它可能与 Dispatcher 事件触发的非恒定速率有关。任何线索如何避免这种情况?在我的代码中,PLAY 按钮的作用是:h_DispatcherTimer.Start()。并且在每个 Dispatcher Timer 滴答声(每 40ms = 25FPS)它会: // 增加全局计数器,检查全局变量是否超过计数器的最大值并使用以下方法更新图表:hr_plot.Model.InvalidatePlot(true) ;
    猜你喜欢
    • 2014-03-21
    • 2023-01-20
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多