我的主要工作重点是集成各种硬件以形成用于工业自动化的连续状态机。通常,这些应用程序需要以规则且准确的频率(<60Hz)“无限期”循环同步操作的工作流。]
作为一名自学成才的开发人员,到目前为止,我已经采用了两种技术,但我都认为这两种方法都不对:
无论是BackgroundWorker
还是等效的,以伪形式:
period
定义为频率的倒数。System.Diagnostics.Stopwatch
或同等时间。period - elapsed
。注意:elapsed
可能不一致,但始终小于period
。原因,我不喜欢这样:
使用System.Timers.Timer
类:
Interval
设置为period
作为频率倒数。Elapsed
事件处理该过程。原因,我不喜欢这样:
在这些情况下,哪种模式/方法被认为是最佳实践?原谅冗长的细节,不胜感激建议。
非常感谢
我的主要工作重点是集成各种硬件以形成用于工业自动化的连续状态机。这些应用程序通常需要以下工作流程:...
如果您熟悉IObservable和System.Reactive.Linq,则可以使用Observable.Interval。如果您要实现一些自定义线程调度,则它也具有接受IScheduler参数的重载,但是默认线程调度在大多数情况下都可以很好地工作。