Freigeben über


Übersicht über das Timer-Steuerelement

Aktualisiert: November 2007

Das Timer-Steuerelement in ASP.NET-AJAX führt in festgelegten Abständen Postbacks aus. Wenn Sie das Timer-Steuerelement mit einem UpdatePanel-Steuerelement verwenden, können Sie in festgelegten Abständen ausgeführte Teilaktualisierungen von Seiten aktivieren. Sie können außerdem mithilfe des Timer-Steuerelements die gesamte Seite bereitstellen.

Dieses Thema enthält folgende Abschnitte:

  • Szenarien

  • Hintergrund

  • Codebeispiele

  • Klassenreferenz

Szenarien für das Timer-Steuerelement

Verwenden Sie das Timer-Steuerelement für folgende Aktionen:

  • Regelmäßiges Aktualisieren der Inhalte einer oder mehrerer UpdatePanel-Steuerelemente, ohne dass dabei die gesamte Webseite aktualisiert wird.

  • Ausführen von Code auf dem Server bei jedem Auslösen eines Postbacks durch ein Timer-Steuerelement

  • Synchrones Bereitstellen der gesamten Webseite auf dem Webserver in festgelegten Abständen

Hintergrund

Das Timer-Steuerelement ist ein Serversteuerelement, mit dem eine JavaScript-Komponente in die Webseite eingebettet wird. Die JavaScript-Komponente startet nach Ablauf der in der Interval-Eigenschaft festgelegten Zeit das Postback vom Browser. Die Eigenschaften für das Timer-Steuerelement werden im Code festgelegt, der auf dem Server ausgeführt wird. Diese Eigenschaften werden an die JavaScript-Komponente übergeben.

Die Webseite muss eine Instanz der ScriptManager-Klasse enthalten, wenn Sie das Timer-Steuerelement verwenden.

Wenn das Postback vom Timer-Steuerelement gestartet wurde, löst das Timer-Steuerelement das Tick-Ereignis auf dem Server aus. Sie können einen Ereignishandler für das Tick-Ereignis erstellen, um Aktionen auszuführen, nachdem die Seite auf dem Server bereitgestellt ist.

Legen Sie über die Interval-Eigenschaft die Häufigkeit der Postbacks fest, und schalten Sie über die Enabled-Eigenschaft den Timer ein- bzw. aus. Die Interval-Eigenschaft wird in Millisekunden festgelegt. Der Standardwert lautet 60.000 Millisekunden bzw. 60 Sekunden.

Hinweis:

Wenn die Interval-Eigenschaft eines Timer-Steuerelements auf einen niedrigen Wert festgelegt wurde, kann dies eine erhebliche Zunahme des Datenverkehrs auf dem Webserver auslösen. Verwenden Sie das Timer-Steuerelement, um den Inhalt nur so oft wie nötig zu aktualisieren.

Sie können mehrere Timer-Steuerelemente auf einer Webseite verwenden, wenn verschiedene UpdatePanel-Steuerelemente in unterschiedlichen Abständen aktualisiert werden müssen. Wahlweise dazu kann eine einzelnen Instanz des Timer-Steuerelements als Auslöser für mehrere UpdatePanel-Steuerelemente auf eine Webseite fungieren.

Verwenden eines Timer-Steuerelements innerhalb eines UpdatePanel-Steuerelements

Wenn sich das Timer-Steuerelement innerhalb eines UpdatePanel-Steuerelements befindet, funktioniert das Timer-Steuerelement automatisch als Auslöser für das UpdatePanel-Steuerelement. Sie können dieses Verhalten außer Kraft setzen, indem Sie die ChildrenAsTriggers-Eigenschaft des UpdatePanel-Steuerelements auf false festlegen.

Für Timer-Steuerelemente innerhalb eines UpdatePanel-Steuerelements wird die JavaScript-Zeitsteuerungskomponente erst wieder neu erstellt, wenn die einzelnen Postbacks abgeschlossen sind. Aus diesem Grund beginnt das festgelegte Intervall erst, wenn das Postback für die Seite abgeschlossen ist. Wenn beispielsweise die Interval-Eigenschaft auf 60.000 Millisekunden (60 Sekunden) festgelegt ist, und das Postback 3 Sekunden lang dauert, wird das nächste Postback 63 Sekunden nach dem vorherigen Postback ausgeführt.

Im folgenden Beispiel wird veranschaulicht, wie ein Timer-Steuerelement in einem UpdatePanel-Steuerelement eingeschlossen wird.

<asp:ScriptManager  id="ScriptManager1" />
<asp:UpdatePanel  id="UpdatePanel1" 
    UpdateMode="Conditional">
  <contenttemplate>
    <asp:Timer id="Timer1" 
      Interval="120000" 
      OnTick="Timer1_Tick">
    </asp:Timer>
  </contenttemplate>
</asp:UpdatePanel>

Verwenden eines Timer-Steuerelements außerhalb eines UpdatePanel-Steuerelements

Wenn sich das Timer-Steuerelement außerhalb eines UpdatePanel-Steuerelements befindet, müssen Sie das Timer-Steuerelement explizit als Auslöser für das zu aktualisierende UpdatePanel-Steuerelement festlegen.

Wenn sich das Timer-Steuerelement außerhalb eines UpdatePanel-Steuerelements befindet, wird die JavaScript-Zeitsteuerungskomponente während der Verarbeitung des Postback weiter ausgeführt. Wenn beispielsweise die Interval-Eigenschaft auf 60.000 Millisekunden (60 Sekunden) festgelegt ist, das Postback jedoch 3 Sekunden lang dauert, wird das nächste Postback 60 Sekunden nach dem vorherigen Postback ausgeführt. Der Benutzer sieht nur 57 Sekunden lang den aktualisierten Inhalt im UpdatePanel-Steuerelement.

Sie müssen die Interval-Eigenschaft auf einen Wert festlegen, bei dem ein asynchrones Postback abgeschlossen werden kann, bevor das nächste Postback initiiert wird. Wird ein neues Postback während der Verarbeitung eines früheren Postbacks initiiert, wird das erste Postback abgebrochen.

Im folgenden Beispiel wird die Verwendung des Timer-Steuerelements außerhalb eines UpdatePanel-Steuerelements veranschaulicht.

<asp:ScriptManager  id="ScriptManager1" />
<asp:Timer ID="Timer1"  Interval="120000" 
  OnTick="Timer1_Tick">
</asp:Timer>
<asp:UpdatePanel ID="UpdatePanel1" >
  <Triggers>
    <asp:AsyncPostBackTrigger ControlID="Timer1" 
        EventName="Tick" />
    </Triggers>
    <ContentTemplate>
      <asp:Label ID="Label1"  ></asp:Label>
  </ContentTemplate>
</asp:UpdatePanel>

Codebeispiele

Im folgenden Beispiel wird ein UpdatePanel-Steuerelement veranschaulicht, das einen nach dem Zufallsprinzip generierten Aktienkurs sowie die Zeit der Generierung des Aktienkurses anzeigt. Standardmäßig aktualisiert das Timer-Steuerelement alle 10 Sekunden den Inhalt im UpdatePanel-Steuerelement. Der Benutzer kann festlegen, dass der Aktienkurs alle 10 Sekunden, alle 60 Sekunden oder überhaupt nicht aktualisiert wird. Wenn der Benutzer beschließt, dass der Aktienkurs aktualisiert werden soll, wird die Enabled-Eigenschaft auf false festgelegt.

<%@ 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 id="Head1" >
    <title>Timer Example Page</title>
    <script >
        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

        Protected Sub RadioButton1_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
            Timer1.Interval = 10000
            Timer1.Enabled = True
        End Sub

        Protected Sub RadioButton2_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
            Timer1.Interval = 60000
            Timer1.Enabled = True
        End Sub

        Protected Sub RadioButton3_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
            Timer1.Enabled = False
        End Sub
</script>
</head>
<body>
    <form id="form1" >
    <asp:ScriptManager ID="ScriptManager1"  />
        <asp:Timer ID="Timer1" OnTick="Timer1_Tick"  Interval="10000" />

        <asp:UpdatePanel ID="StockPricePanel"  UpdateMode="Conditional">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Timer1" />
        </Triggers>
        <ContentTemplate>
            Stock price is <asp:Label id="StockPrice" ></asp:Label><BR />
            as of <asp:Label id="TimeOfPrice" ></asp:Label>  
        </ContentTemplate>
        </asp:UpdatePanel>
        <div>
            <asp:RadioButton ID="RadioButton1" AutoPostBack="true" GroupName="TimerFrequency"  Text="10 seconds" OnCheckedChanged="RadioButton1_CheckedChanged" /><br />
            <asp:RadioButton ID="RadioButton2" AutoPostBack="true" GroupName="TimerFrequency"  Text="60 seconds" OnCheckedChanged="RadioButton2_CheckedChanged" /><br />
            <asp:RadioButton ID="RadioButton3" AutoPostBack="true" GroupName="TimerFrequency"  Text="Never" OnCheckedChanged="RadioButton3_CheckedChanged" /><br />
            <br />
        Page originally created at <asp:Label ID="OriginalTime" ></asp:Label>
        </div>
    </form>
</body>
</html>
<%@ 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 id="Head1" >
    <title>Timer Example Page</title>
    <script >
        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");
        }

        protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
        {
            Timer1.Enabled = true;
            Timer1.Interval = 10000;
        }

        protected void RadioButton2_CheckedChanged(object sender, EventArgs e)
        {
            Timer1.Enabled = true;
            Timer1.Interval = 60000;
        }

        protected void RadioButton3_CheckedChanged(object sender, EventArgs e)
        {
            Timer1.Enabled = false;
        }

</script>
</head>
<body>
    <form id="form1" >
        <asp:ScriptManager ID="ScriptManager1"  />
        <asp:Timer ID="Timer1" OnTick="Timer1_Tick"  Interval="10000" />

        <asp:UpdatePanel ID="StockPricePanel"  UpdateMode="Conditional">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Timer1" />
        </Triggers>
        <ContentTemplate>
            Stock price is <asp:Label id="StockPrice" ></asp:Label><BR />
            as of <asp:Label id="TimeOfPrice" ></asp:Label>  
            <br />

        </ContentTemplate>
        </asp:UpdatePanel>
        <div>
        <br />
        Update stock price every:<br />
        <asp:RadioButton ID="RadioButton1" AutoPostBack="true" GroupName="TimerFrequency"  Text="10 seconds" OnCheckedChanged="RadioButton1_CheckedChanged" /><br />
        <asp:RadioButton ID="RadioButton2" AutoPostBack="true" GroupName="TimerFrequency"  Text="60 seconds" OnCheckedChanged="RadioButton2_CheckedChanged" /><br />
        <asp:RadioButton ID="RadioButton3" AutoPostBack="true" GroupName="TimerFrequency"  Text="Never" OnCheckedChanged="RadioButton3_CheckedChanged" />
        <br />
        Page loaded at <asp:Label ID="OriginalTime" ></asp:Label>
        </div>
    </form>
</body>
</html>

Lernprogramme

Exemplarische Vorgehensweise: Einführung in das Timer-Steuerelement

Exemplarische Vorgehensweise: Verwenden des ASP.NET-Timer-Steuerelements mit mehreren UpdatePanel-Steuerelementen

Klassenreferenz

In der folgenden Tabelle sind die wichtigsten Serverklassen für das Timer-Steuerelement dargestellt.

  • Timer
    Führt asynchrone oder synchrone Postbacks von Webseiten in einem festgelegten Intervall aus.

Siehe auch

Konzepte

Übersicht über das Teilrendering von Seiten

Übersicht über das UpdatePanel-Steuerelement