This article is currently in the process of being translated into Thai (~98% done).
Timer control
Timer controls เป็นส่วนที่ให้มีการส่งค่า postbacks แบบหน่วงเวลา ถ้าทำงานร่วมกับ UpdatePanels ซึ่งเป็นวิธีที่นิยมใช้กันมากที่สุดในการเปลี่ยนแปลงข้อมูลบางส่วนบนเว็บเพจ หรือสามารถใช้สำหรับการแก้ไขทั้งหน้าเพจได้เช่นกัน ในบทนี้ เราจะเจาะลึกมากขึ้นกับเรื่อง UpdatePanels ดังนั้นหากคุณยังไม่เข้าใจในส่วนนี้ ให้ย้อนกลับไปอ่านก่อน
นี่เป็นตัวอย่างเล็กๆในส่วนของ Timer control เราจะให้หน้าเพจอัปเดตทุกๆ 5 วินาที
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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>Timers</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Timer runat="server" id="UpdateTimer" interval="5000" ontick="UpdateTimer_Tick" />
<asp:UpdatePanel runat="server" id="TimedPanel" updatemode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger controlid="UpdateTimer" eventname="Tick" />
</Triggers>
<ContentTemplate>
<asp:Label runat="server" id="DateStampLabel" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
CodeBehind ที่ต้องใช้:
protected void UpdateTimer_Tick(object sender, EventArgs e)
{
DateStampLabel.Text = DateTime.Now.ToString();
}
เป็นอีกหนึ่งตัวอย่างที่ง่าย โดยที่มี UpdatePanel ปกติ ซึ่งมี Trigger ได้มีการอ้างอิงกับ Timer control. นั่นหมายความว่า Panel จะทำงานแบบ หน่วงเวลา Timer control ใช้ตัวเลขที่มีค่าเป็นมิลลิวินาทีในการหน่วงเวลาการทำงาน ซึ่งคุณสามารถดูได้จาก CodeBehind จะเห็นว่ามีการอัปเดต DateStampLabel ไว้แล้ว ซึ่งสามารถทำให้มีประสิทธิภาพมากขึ้นได้โดยใช้ JavaScript ซึ่งอัปเดตเวลาในฝั่งของผู้ใช้ แทนที่จะให้ฝั่งเซิร์ฟเวอร์จับเวลา ตัวอย่างนี้ใช้เพื่อแสดงให้เห็นถึงประสิทธิภาพการทำงานของ Timer control.
อีกวิธีหนึ่งคือ Timer ในส่วนของ UpdatePanel ลักษณะนี้ทำให้เราสามารถกำหนด trigger ได้ แต่คุณควรตระหนักถึงความจริงที่ว่าลักษณะการทำงานจะแตกต่างกัน ขึ้นอยู่กับว่าคุณมี Timer อยู่ภายในหรือภายนอก UpdatePanel หาก Timer อยู่ภายใน UpdatePanel Timer จะไม่ถูกสร้างใหม่จนกว่า UpdatePanel จะอัปเดตเสร็จ นั่นหมายความว่าถ้า Timer มีการหน่วงเวลา 60 วินาที และใช้วเลาอัปเดต 5 วินาที เหตุการณ์ต่อไปจะไม่เกิดขึ้นในช่วง 60 วินาทีแรก แต่จะเกิดขึ้นหลังจากนั้น 65 วินาที ในอีกมุมหนึ่ง ถ้า Timer อยู่ภายนอก UpdatePanel ผู้ใช้งานจะมองเห็นคอนแทนต์เหล่านั้นแค่ 55 วินาที ก่อนอัปเดตต่อไป
ข้อที่ควรจำคือ ถึงแม้ว่าการปรับแต่งเว็บจะไม่ได้ทำให้เซิร์ฟเวอร์ทำงานหนักก็ตาม แต่ตัว Client ก็ต้องติดต่อกับเซิร์ฟเวอร์ตลอดเวลา และขณะที่ timer ทำงาน คุณอาจต้องส่ง postbacks เป็นระยะ ซึ่งสามารถทำให้สิ่งต่าง ๆ ช้าลง ใช้ช่วงเวลาสูงที่สุดเท่าที่จะทำได้ และพิจารณาว่าการติดต่อกับเซิร์ฟเวอร์นั้นจำเป็นจริงๆ หรือไม่