多个ASP计时器在单个更新面板下无法运行

时间:2013-05-04 08:38:17

标签: c# asp.net .net datetime timer

我必须在我的aspx页面上实现一个时钟和15分钟的倒计时自动收报机。请不要建议我的客户端脚本不符合我的要求,我通过使用asp ticker和更新面板知道我在服务器上生成的负载......我知道这些缺陷,但它是我的客户要求。

ASPX / HTML:

  <asp:ScriptManager runat="server" ID="scr"/>
        <asp:UpdatePanel runat="server" ID="up" UpdateMode="Conditional" >

            <ContentTemplate>
                 <asp:Timer runat="server" ID="timer1" OnTick="timer1_OnTick" Interval="1000"></asp:Timer>
                  <label id="lblTime" runat="server"></label>

                 <asp:Timer runat="server" ID="timer2" OnTick="timer2_OnTick" Interval="1000"></asp:Timer>
                  <label id="Label1" runat="server"></label>

            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="timer1" EventName="Tick"/>
                <asp:AsyncPostBackTrigger ControlID="timer2" EventName="Tick"/>

            </Triggers>
        </asp:UpdatePanel>

代码隐藏:

 protected void timer1_OnTick(object sender, EventArgs e)
        {
            TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
            DateTime indianTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tzi);
            lblTime.InnerText = string.Format("{0:dd:MM:yyyy hh:mm:ss}", indianTime);

        }


        protected void timer2_OnTick(object sender, EventArgs e)
        {
            var ts = new TimeSpan(0, 14, 59);
            var oneSecond = new TimeSpan(0, 0, 1);
            ts = ts.Subtract(oneSecond);
            Label1.InnerText = string.Format("{0}:{1}", ts.Minutes, ts.Seconds);
        }

问题:

我的第一个工作正常,但倒数计时器不起作用。它不显示任何内容或静态文本14:58。 请注意,我也试过两个不同的更新面板。但没有成功。也欢迎使用多个更新面板的建议。没问题。 请帮助。

更新代码

仍然没有效果。它不安全吗?我认为一个线程正在踩另一个线程。请帮忙

TimeSpan  ts ;

TimeSpan onesec ;


protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        ts = new TimeSpan(0, 15, 0);
        onesec = new TimeSpan(0, 0, 1);
    }
}
protected void timer1_Tick(object sender, EventArgs e)
{
    lbl1.Text = string.Format("{0:dd.MM.yyyy hh:mm:ss}", DateTime.Now);
    ts = ts.Subtract(onesec);
    lbl2.Text = string.Format(@"{0:hh\:mm\:ss}", ts);
}`

0 个答案:

没有答案