.NET计时器是否比VB6计时器更可靠

.NET计时器是否比VB6计时器更可靠,.net,vb.net,timer,vb6-migration,.net,Vb.net,Timer,Vb6 Migration,在VB6的好日子里,你不能依靠定时器控件精确地按指定的间隔开火。如果您的程序正在进行一些密集的处理,则计时器滴答声事件会被推送到堆栈上,并且只有当它到达指令时才会被处理,这可能需要几秒钟(?)之后 所以我的问题是,.NET定时器控件是否得到了改进,从而可以依赖它在指定的时间间隔内准确地触发?我想上面的说法仍然适用,不是吗?但是它比VB6版本好吗 除了使用计时器控件以确保事件在指定的时间间隔后触发外,还有其他方法吗?计时器的问题在于它在某种意义上依赖于操作系统。计时器工作必须由操作系统安排,如果有

在VB6的好日子里,你不能依靠定时器控件精确地按指定的间隔开火。如果您的程序正在进行一些密集的处理,则计时器滴答声事件会被推送到堆栈上,并且只有当它到达指令时才会被处理,这可能需要几秒钟(?)之后

所以我的问题是,.NET定时器控件是否得到了改进,从而可以依赖它在指定的时间间隔内准确地触发?我想上面的说法仍然适用,不是吗?但是它比VB6版本好吗


除了使用计时器控件以确保事件在指定的时间间隔后触发外,还有其他方法吗?

计时器的问题在于它在某种意义上依赖于操作系统。计时器工作必须由操作系统安排,如果有另一个高优先级进程占用了大量的处理能力,那么它可能会决定安排您的代码稍后运行,以便有更多的时间进行另一个更重要的工作

在大多数情况下,较新的定时器可能更可靠,但它们只与子系统一样可靠。我不确定windows是否实现了硬件计时器(更可靠),或者.NETVB是否使用了它(如果实现了的话),但从我过去的工作来看,它似乎是命中或未命中的。大多数时候,它几乎在一个很小的范围内死机,而其他时候,我看到它在某些条件下被延迟了一秒钟


我的建议是不要使用睡眠,而是使用计时器,这样你就不会有太多问题


注意:要在精确的时间间隔内发生,这是相对困难的,通常会有几毫秒的差异,所以你不应该依赖非常精确的计时器粒度。

计时器的问题是,它在某种意义上依赖于操作系统。计时器工作必须由操作系统安排,如果有另一个高优先级进程占用了大量的处理能力,那么它可能会决定安排您的代码稍后运行,以便有更多的时间进行另一个更重要的工作

在大多数情况下,较新的定时器可能更可靠,但它们只与子系统一样可靠。我不确定windows是否实现了硬件计时器(更可靠),或者.NETVB是否使用了它(如果实现了的话),但从我过去的工作来看,它似乎是命中或未命中的。大多数时候,它几乎在一个很小的范围内死机,而其他时候,我看到它在某些条件下被延迟了一秒钟


我的建议是不要使用睡眠,而是使用计时器,这样你就不会有太多问题


注意:要在精确的时间间隔内发生,这是相对困难的,通常会有几毫秒的差异,因此您不应该依赖非常精确的计时器粒度。

System.Windows.Forms.Timer
在UI线程上运行,并依赖于消息泵;它的工作原理与VB6定时器基本相同

但是.NET还有其他计时器-
System.Threading.Timer
System.timers.Timer
,它们在多线程环境中使用工作线程


哪个“更好”取决于您的需求-使用多线程计时器可能更接近于请求的时间间隔,但这是以使用线程所固有的额外复杂性为代价的。

System.Windows.Forms.timer
在UI线程上运行,并依赖于消息泵;它的工作原理与VB6定时器基本相同

但是.NET还有其他计时器-
System.Threading.Timer
System.timers.Timer
,它们在多线程环境中使用工作线程


哪个“更好”取决于您的需求-使用多线程计时器可能会在请求的时间间隔内触发,但这是以使用线程所固有的增加复杂性为代价的。

与C无关,这里重新标记。您认为它如何做得更好?单线程计时器需要等待上一个处理程序完成。当然,您可以使用多线程计时器,但这会增加很多复杂性。这不是一个改进,而是针对不同的用例。计时器组件的工作方式与VB6计时器完全相同。VB.NET中的异步计时器类没有相应的VB6等价物,VB6不支持线程。在使用之前,一定要对自己进行线程方面的培训。与C#无关,这里重新标记。您认为它可以做得更好吗?单线程计时器需要等待上一个处理程序完成。当然,您可以使用多线程计时器,但这会增加很多复杂性。这不是一个改进,而是针对不同的用例。计时器组件的工作方式与VB6计时器完全相同。VB.NET中的异步计时器类没有相应的VB6等价物,VB6不支持线程。在使用线程之前,一定要对自己进行培训。“我的建议是不要使用睡眠,而是使用计时器”?但他不使用sleeps@sternr我知道,我只是警告他,试图用睡眠代替计时器是个坏主意。“我的建议是不要用睡眠代替计时器”?但他不使用sleeps@sternr我知道,我只是警告他,用睡眠代替计时器是个坏主意。