我需要以大约 4 到 8 毫秒的间隔将项目排入队列。
另外,我的 UI 层需要以大约 33 毫秒的间隔从这些项目中出列、处理和显示信息(它可能在该间隔内多次出列)。
我不太确定应该使用 Timers 和 Queue 的哪种组合来使其正常工作。
我想我应该为队列使用 ConcurrentQueue 类,但是我应该为入队和出队使用什么计时器机制?
更新:我最终选择了 Brian Gideon 和 Alberto 的答案。
没有详细介绍这里是我所做的:
我将以下计时器用于我的 4ms 计时器和 33ms 计时器。(http://www.codeproject.com/Articles/98346/Microsecond-and-Millisecond-NET-Timer)
我的 4ms 计时器从高速摄像机读取数据,进行少量处理并将数据排入 ConcurrentQueue。
我的 33ms 计时器从队列中取出所有项目,对每个项目进行更多处理并将数据发送到另一个对象,该对象计算某个给定时间间隔内的滚动平均值。(队列用于管理滚动平均值。)
在 CompositionTarget.Rendering 事件中,我从滚动平均对象中获取值并将它们绘制在我的自定义折线图控件上。
我提到了 UI 的 33 毫秒,因为这些数据被输入到实时图表中。33ms 大约是 30 fps ......任何比这慢的东西和一些平滑度都会丢失。
我最终也使用了 ConccuentQueue。效果很好。
CPU受到了一点打击。我认为这是由于高性能计时器。
感谢大家的帮助。