毫秒等待的C#定时器

Kev*_*ith 0 c# timer

每隔n*x毫秒我执行一次动作,其中n = 0,1,2,...; x是一些增量.

示例 - 每25毫秒执行一次计算.

对于每个增量,此操作可能需要少于x秒.因此,我需要在C#中使用一种方法来等待剩余的(x - actual_time)毫秒.

示例 - 如果计算只需要20毫秒,我需要再等待5个毫秒才能重新运行计算.

请指教.

谢谢,凯文

Eri*_*ert 13

我需要在C#中使用一种方法来等待剩余的(x - actual_time)毫秒.

我认为这是在Windows上运行的C#.

而且有你的问题.Windows不是"实时"操作系统.

如果您需要毫秒级别的计时精度,那么您可以做的最好的事情是将线程的线程优先级设置得非常高,然后在查询高性能计时器(秒表)时忙等待.

你不能屈服于另一个线程 ; 另一个线程可以在操作系统上下文切换之前运行多达16毫秒,当然除非你是最高优先级的线程,否则你无法保证在16毫秒之后控制权回到你身上.

现在,将线程优先级设置为高然后忙碌等待是您可能做的最粗鲁的事情之一; 基本上你将控制用户的机器,不允许他们用它做任何其他事情.

因此,我要做的就是完全放弃这一行动.或者,(1)考虑获得专为实时过程控制而设计的操作系统(如果实际上是您的应用程序),而不是为多任务业务应用程序设计的多任务操作系统.或者(2)放弃你的要求,即动作恰好每25毫秒发生一次.只需执行一次计算,然后将量子的剩余部分输出到另一个线程.当你得到控制权时,看看你屈服后是否超过25毫秒; 如果没有,再次屈服.如果有,请重新开始并执行计算.