Timer 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在特定間隔執行非同步或同步的網頁回貼。
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
- 繼承
- 屬性
- 實作
範例
以下範例展示了 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>
<body>
<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>
<div>
Page originally created at <asp:Label ID="OriginalTime" runat="server"></asp:Label>
</div>
</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>
<body>
<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>
<div>
Page originally created at <asp:Label ID="OriginalTime" runat="server"></asp:Label>
</div>
</form>
</body>
</html>
備註
本主題內容:
簡介
這個 Timer 控制鍵讓你能在指定間隔內進行回傳。 當你將控制項作為控制項的觸發UpdatePanel器時Timer,UpdatePanel控制項會透過非同步的部分頁面更新來更新。 你必須在網頁中包含 ScriptManager 物件才能使用這個 Timer 控制項。
你可以用 Timer 這個控制來更新 UpdatePanel 控制,方法是把計時器包含在控制 UpdatePanel 裡。 或者,你也可以把計時器放在控制外 UpdatePanel ,並設定計時器作為觸發器。
你也可以在網頁中包含 Timer 控制項,且不將其設為控制項的觸發條件 UpdatePanel ,來啟動完整網頁的完整回貼。
當你計時器間隔結束時,可以透過建立事件 Tick 處理程序來執行伺服器程式碼。 在事件處理器中,你可以包含動態調整控制行為 Timer 的程式碼。
設定屬性 Interval 指定回貼的頻率。 設定 Enabled 屬性來開啟 Timer 或關閉。
備註
控制項何時回傳至網頁伺服器的準確 Timer 度取決於瀏覽器中執行的 ECMAScript(JavaScript) window.setTimeout 函式的準確性。
此 Interval 性質以毫秒為單位定義。 你必須將屬性設定 Interval 為一個值,讓至少有一個非同步回貼完成,才能啟動下一次回貼。 當 Timer 控制項位於控制 UpdatePanel 點之外時,計時器會繼續運行,同時控制項內容 UpdatePanel 會被刷新。 如果在處理較早的回覆時發起新的回貼,第一個回貼將會被取消。 預設值為 60,000 毫秒(60 秒)。
宣告式語法
<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"
/>
建構函式
| 名稱 | Description |
|---|---|
| Timer() |
初始化 Timer 類別的新執行個體。 |
屬性
| 名稱 | Description |
|---|---|
| Adapter |
拿到瀏覽器專用的控制器轉接器。 (繼承來源 Control) |
| AppRelativeTemplateSourceDirectory |
取得或設定包含此控制項的 or UserControl 物件的Page應用程式相對虛擬目錄。 (繼承來源 Control) |
| BindingContainer |
取得包含該控制項資料綁定的控制項。 (繼承來源 Control) |
| ChildControlsCreated |
會取得一個值,表示伺服器控制項的子控制項是否已被建立。 (繼承來源 Control) |
| ClientID |
取得由 ASP.NET 產生的 HTML 標記的控制 ID。 (繼承來源 Control) |
| ClientIDMode |
取得或設定用於產生屬性值 ClientID 的演算法。 (繼承來源 Control) |
| ClientIDSeparator |
會得到一個字元值,代表該屬性中使用 ClientID 的分隔符字元。 (繼承來源 Control) |
| Context |
取得 HttpContext 與伺服器控制項相關聯的物件,用於目前的網頁請求。 (繼承來源 Control) |
| Controls |
取得 ControlCollection 一個物件,代表 UI 階層中指定伺服器控制項的子控制項。 (繼承來源 Control) |
| DataItemContainer |
如果命名容器實 IDataItemContainer作 。 (繼承來源 Control) |
| DataKeysContainer |
如果命名容器實 IDataKeysControl作 。 (繼承來源 Control) |
| DesignMode |
會獲得一個值,表示是否在設計表面上使用控制項。 (繼承來源 Control) |
| Enabled | |
| EnableTheming |
取得或設定一個值,指示主題是否適用於此控制。 (繼承來源 Control) |
| EnableViewState |
取得或設定一個值,指示伺服器控制項是否能持久化其視圖狀態,以及其包含的任何子控制項的視圖狀態,給請求端客戶端。 (繼承來源 Control) |
| Events |
會取得一個事件處理代理清單來管理控制。 這個屬性是唯讀的。 (繼承來源 Control) |
| HasChildViewState |
會取得一個值,表示目前伺服器控制項的子控制項是否儲存了任何檢視狀態設定。 (繼承來源 Control) |
| ID |
取得或設定分配給伺服器控制的程式識別碼。 (繼承來源 Control) |
| IdSeparator |
取得用來分離控制識別碼的字元。 (繼承來源 Control) |
| Interval |
取得或設定等待的毫秒數,然後才開始回傳。 |
| IsChildControlStateCleared |
會取得一個值,表示該控制中所包含的控制是否具有控制狀態。 (繼承來源 Control) |
| IsTrackingViewState |
會得到一個值,表示伺服器控制是否正在儲存對其檢視狀態的變更。 (繼承來源 Control) |
| IsViewStateEnabled |
會取得一個值,表示此控制是否啟用了檢視狀態。 (繼承來源 Control) |
| LoadViewStateByID |
會得到一個值,表示控制項是否參與載入其視圖狀態 ID ,而非索引。 (繼承來源 Control) |
| NamingContainer |
會取得伺服器控制項命名容器的參考,該容器會建立一個獨特的命名空間,用來區分具有相同 ID 屬性值的伺服器控制項。 (繼承來源 Control) |
| Page |
會取得包含 Page 伺服器控制的實例參考。 (繼承來源 Control) |
| Parent |
在頁面控制階層中,會取得伺服器控制項的父控制權的參考。 (繼承來源 Control) |
| RenderingCompatibility |
會得到一個值,指定渲染後的 HTML 會相容的 ASP.NET 版本。 (繼承來源 Control) |
| Site |
當在設計表面渲染時,會取得承載當前控制項的容器資訊。 (繼承來源 Control) |
| SkinID |
取得或設定皮膚貼合控制劑。 (繼承來源 Control) |
| TemplateControl |
取得或設定包含此控制項的範本參考。 (繼承來源 Control) |
| TemplateSourceDirectory |
取得包含當前伺服器控制權的 or UserControl 虛擬目錄Page。 (繼承來源 Control) |
| UniqueID |
取得伺服器控制的唯一、階層限定的識別碼。 (繼承來源 Control) |
| ValidateRequestMode |
取得或設定一個值,指示控制器是否檢查瀏覽器的客戶端輸入是否有潛在危險的值。 (繼承來源 Control) |
| ViewState |
取得狀態資訊字典,讓你能儲存並還原伺服器控制的多個請求,針對同一頁面。 (繼承來源 Control) |
| ViewStateIgnoresCase |
會得到一個值,表示該物件是否 StateBag 不區分大小寫。 (繼承來源 Control) |
| ViewStateMode |
取得或設定此控制的視圖狀態模式。 (繼承來源 Control) |
| Visible |
方法
事件
| 名稱 | Description |
|---|---|
| DataBinding |
當伺服器控制項綁定到資料來源時會發生。 (繼承來源 Control) |
| Disposed |
當伺服器控制從記憶體中釋放時發生,這是伺服器控制生命週期中請求 ASP.NET 頁面的最後階段。 (繼承來源 Control) |
| Init |
發生在伺服器控制初始化時,這是其生命週期的第一步。 (繼承來源 Control) |
| Load |
當伺服器控制項載入 Page 物件時會發生。 (繼承來源 Control) |
| PreRender |
發生在物件載入後 Control 但渲染之前。 (繼承來源 Control) |
| Tick |
當屬性中指定的 Interval 毫秒數已過,頁面被發布到伺服器時,會發生這種情況。 |
| Unload |
當伺服器控制項從記憶體卸載時發生。 (繼承來源 Control) |
明確介面實作
擴充方法
| 名稱 | Description |
|---|---|
| FindDataSourceControl(Control) |
回傳與指定控制項相關聯的資料來源。 |
| FindFieldTemplate(Control, String) |
回傳指定控制項命名容器中指定欄位的欄位範本。 |
| FindMetaTable(Control) |
回傳包含資料控制項的元值物件。 |