C#DispatcherTimer的确切长度

时间:2019-03-25 10:27:19

标签: c# wpf dispatchertimer

我有一个奇怪的问题。我试图快速生成数据(以后,我将使用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将所有项目添加到其他列表中,但没有明显改善。我在做什么错了?

0 个答案:

没有答案