我有一个奇怪的问题。我试图快速生成数据(以后,我将使用I / O的输入),然后绘制它们。
由于绘图很耗时,因此我将数据添加到其他数组中,而不是阻止生成新数组。
public MainWindow() {
InitializeComponent();
DispatcherTimer adder = new DispatcherTimer {
Interval = new TimeSpan(0, 0, 0, 0, 1)
};
adder.Tick += AddData;
adder.Start();
DispatcherTimer refresher = new DispatcherTimer {
Interval = new TimeSpan(0, 0, 0, 0, 30)
};
refresher.Tick += RefreshScreen;
refresher.Start();
}
private void RefreshScreen(object sender, EventArgs e) {
Debug.WriteLine(queue.Count);
lock ( queue ) {
data.InsertRange(0, queue);
queue.Clear();
}
//ToDoLater
}
private void AddData(object sender, EventArgs e) {
queue.Enqueue(new TimedData());
}
class TimedData {
public int Value { get; private set; }
public DateTime Time { get; private set; }
public TimedData() {
Time = DateTime.Now;
Value = new Random().Next(0,200);
}
我预计队列数约为20-25,但我只有2-3。真的很低问题在哪里?我尝试使用List而不是Queue,并使用Queue.Enqueue将所有项目添加到其他列表中,但没有明显改善。我在做什么错了?