首页 > 解决方案 > 如果我在 asp:Timer 中设置间隔小于 1 秒会发生什么?

问题描述

我刚刚使用ASP.Net Webforms、使用asp:Timerasp:UpdatePanel部分刷新页面创建了排队系统。我设置asp:Timer Interval为“100”,即 0.1 秒。每次部分页面刷新后,称为存储过程的页面有时运行不佳。Interval如果我设置的时间少于 1 秒,我的问题是否有任何最佳实践?对我的系统有什么影响?

标签: sqlasp.netsql-servervb.net

解决方案


当您的计时器在下一个滴答声之前没有足够的时间完成时,解决方案是在计时器回调本身内手动调用下一个滴答声

ReadOnly interval As Integer = 100
ReadOnly minIntervalBetweenCalls As Integer = 0
Private ReadOnly Timer2 As New System.Threading.Timer(AddressOf Timer2_Tick, Nothing, interval, -1)

Private Sub Timer2_Tick(state As Object)
    Dim nextRunTime = DateTime.Now.AddMilliseconds(interval)
    ' run processes
    Timer2.Change(Math.Max(nextRunTime.Subtract(DateTime.Now).Milliseconds, minIntervalBetweenCalls ), -1)
End Sub

数学确保下一个滴答将在当前滴答开始后 100 毫秒发生,或者在当前滴答之后立即发生,以适应超过 100 毫秒的滴答。


推荐阅读