public ref class Timer : System::Web::UI::Control, System::Web::UI::IPostBackEventHandler, System::Web::UI::IScriptControl
[System.Drawing.ToolboxBitmap(typeof(EmbeddedResourceFinder), "System.Web.Resources.Timer.bmp")]
public class Timer : System.Web.UI.Control, System.Web.UI.IPostBackEventHandler, System.Web.UI.IScriptControl
[<System.Drawing.ToolboxBitmap(typeof(EmbeddedResourceFinder), "System.Web.Resources.Timer.bmp")>]
type Timer = class
    inherit Control
    interface IPostBackEventHandler
    interface IScriptControl
Public Class Timer
Inherits Control
Implements IPostBackEventHandler, IScriptControl
Timer

以下示例显示了一个 UpdatePanel 控件,该控件显示随机生成的股票价格和生成股票价格的时间。 控件 Timer 每 10 秒更新控件 UpdatePanel 中的内容。

在此示例中,计时器间隔设置为 10 秒,以便在运行示例时无需等待很长时间即可看到结果。 由于每个计时器间隔会导致回发导致网络流量,因此在生产应用程序中,应将间隔设置为对应用程序仍然可行的最长时间。

<%@ Page Language="C#" AutoEventWireup="true" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Timer Example Page</title> <script runat="server"> protected void Page_Load(object sender, EventArgs e) OriginalTime.Text = DateTime.Now.ToLongTimeString(); protected void Timer1_Tick(object sender, EventArgs e) StockPrice.Text = GetStockPrice(); TimeOfPrice.Text = DateTime.Now.ToLongTimeString(); private string GetStockPrice() double randomStockPrice = 50 + new Random().NextDouble(); return randomStockPrice.ToString("C"); </script> </head> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <asp:Timer ID="Timer1" OnTick="Timer1_Tick" runat="server" Interval="10000" /> <asp:UpdatePanel ID="StockPricePanel" runat="server" UpdateMode="Conditional"> <Triggers> <asp:AsyncPostBackTrigger ControlID="Timer1" /> </Triggers> <ContentTemplate> Stock price is <asp:Label id="StockPrice" runat="server"></asp:Label><BR /> as of <asp:Label id="TimeOfPrice" runat="server"></asp:Label> </ContentTemplate> </asp:UpdatePanel> Page originally created at <asp:Label ID="OriginalTime" runat="server"></asp:Label> </form> </body> </html> <%@ Page Language="VB" AutoEventWireup="true" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Timer Example Page</title> <script runat="server"> Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) OriginalTime.Text = DateTime.Now.ToLongTimeString() End Sub Protected Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) StockPrice.Text = GetStockPrice() TimeOfPrice.Text = DateTime.Now.ToLongTimeString() End Sub Private Function GetStockPrice() As String Dim randomStockPrice As Double = 50 + New Random().NextDouble() Return randomStockPrice.ToString("C") End Function </script> </head> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <asp:Timer ID="Timer1" OnTick="Timer1_Tick" runat="server" Interval="10000" /> <asp:UpdatePanel ID="StockPricePanel" runat="server" UpdateMode="Conditional"> <Triggers> <asp:AsyncPostBackTrigger ControlID="Timer1" /> </Triggers> <ContentTemplate> Stock price is <asp:Label id="StockPrice" runat="server"></asp:Label><BR /> as of <asp:Label id="TimeOfPrice" runat="server"></asp:Label> </ContentTemplate> </asp:UpdatePanel> Page originally created at <asp:Label ID="OriginalTime" runat="server"></asp:Label> </form> </body> </html>

本主题内容:

  • 声明性语法

    控件 Timer 使你能够以指定的时间间隔执行回发。 使用 Timer 控件作为控件的 UpdatePanel 触发器时, UpdatePanel 将使用异步的分页更新来更新控件。 必须在 ScriptManager 网页中包含 对象才能使用 控件 Timer

    通过使用 Timer 控件,可以通过在 控件中包含 UpdatePanel 计时器来更新 UpdatePanel 控件。 或者,可以将计时器放在控件外部, UpdatePanel 并将计时器设置为触发器。

    还可以通过将 控件包含在 Timer 网页中而不将其设置为控件的 UpdatePanel 触发器来启动完整网页的完全回发。

    可以通过为 Tick 事件创建事件处理程序,在计时器间隔已过时运行服务器代码。 在事件处理程序中,可以包含动态调整控件行为的 Timer 代码。

    Interval 设置 属性以指定回发的频率。 Enabled 设置 属性以打开 Timer 或关闭 。

    控件发回 Web 服务器时 Timer 的准确性取决于在浏览器中运行的 ECMAScript (JavaScript) window.setTimeout 函数的准确性。

    属性 Interval 以毫秒为单位定义。 必须将 属性设置为 Interval 一个值,该值允许在启动下一个回发之前至少完成一个异步回发。 当 Timer 控件在控件外部 UpdatePanel 时,计时器将继续运行,同时刷新控件的内容 UpdatePanel 。 如果在处理较早的回发时启动新的回发,则会取消第一次回发。 默认值为 60,000 毫秒 (60 秒) 。

    Timer 在 属性中添加 Interval 值较小的控件可能会生成大量传入和传出 Web 服务器的流量。 Timer 仅在必要时使用 控件来刷新内容。

    声明性语法

    <asp:Timer  
        Enabled="True|False"  
        EnableTheming="True|False"  
        EnableViewState="True|False"  
        ID="string"  
        Interval="integer"  
        OnDataBinding="DataBinding event handler"  
        OnDisposed="Disposed event handler"  
        OnInit="Init event handler"  
        OnLoad="Load event handler"  
        OnPreRender="PreRender event handler"  
        OnTick="Tick event handler"  
        OnUnload="Unload handler"  
        runat="server"  
        SkinID="string"  
        Visible="True|False"  
    
  •