我有一个小型网络应用,可以显示不同时区的时间。时间计算似乎是正确的。我使用timer
控件生成回发。
<asp:Timer ID="Timer1" runat="server" Interval="60000" OnTick="Refresh_Time">
</asp:Timer>
问题:
问题是页面刷新与服务器时钟不同步。例如,如果我在9.55.30 AM
启动应用程序,则下一个回发位于9.56.30 AM
所以,现在,我要观察服务器时钟并在0时启动应用程序秒。像9.57.00 AM
这样的东西。显然,它永远不会100%准确。
理想情况下,我正在寻找的是,无论何时运行应用9.55.15 AM
或9.55.45 AM
,下一次回发都应发生在9.56.00 AM
。任何帮助表示赞赏。
修改
解决问题的代码
protected void Page_Load(object sender, EventArgs e)
{
Timer1.Interval = 1000*(60 - DateTime.Now.Second);
}
答案 0 :(得分:0)
在您的代码的page_load中,您需要计算发送给客户端的实际间隔并将其设置在那里。
答案 1 :(得分:0)
你有没有考虑过,在你的Refresh_Time方法中,让服务器做一些等待回发,直到达到分钟?
此外,I quickly found an existing question on 'push' notifications in ASP.NET。这也是一个不错的选择,因为您无法假设客户端可以知道它在服务器上的时间。