对于一个对你们所有人来说可能很简单的问题,我再次表示歉意。我对 Silverlight 的幕后情况了解有限。
我有一个图表应用程序 (Visiblox),我用作滚动范围,每 20 毫秒更新一次,添加和删除一个点。在伪代码中:
List<Point> datapoints= new List<Point>();
Series series = new Series(datapoints);
void timer_tick(){
datapoints.Add(new Point);
datapoints.RemoveAt(0);
// no need to refresh chart, it does refresh automatically
}
在此图表工具中运行 6 系列时,它开始显示有点迟缓。将刻度更改为 10 毫秒没有任何区别,图表以相同的速度更新,因此似乎 20 毫秒是速度限制(UI 或图表?)。
我尝试CompositionTarget.Rendering
并得到了相同的结果:低于 20 毫秒,速度没有差异。
然后我不小心启用了两者,速度翻了一番。所以我用多个线程(2、3、4)进行了测试,速度增加了一倍、三倍和四倍。这还没有锁,因为我什至不知道我需要在哪个进程上生成锁,但没有数据损坏或内存泄漏。
我的问题是为什么 20ms 的缓慢图表不能在 10ms 运行,但在多线程时却快得离谱?UI 刷新过程是否运行得更快?图表计算是否加倍?或者单个 DispatcherTimer 的执行速度是否有限制?
谢谢!
编辑:我有嵌入式编码的背景,所以当我想到线程和时序时,我立即想到在硬件中切换一个引脚并连接一个示波器来测量进程长度。我是 C# 中的线程新手,并且没有用于连接范围的引脚。有没有办法以图形方式查看线程计时?