TOC

This article is currently in the process of being translated into Thai (~98% done).

Controls:

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 เป็นระยะ ซึ่งสามารถทำให้สิ่งต่าง ๆ ช้าลง ใช้ช่วงเวลาสูงที่สุดเท่าที่จะทำได้ และพิจารณาว่าการติดต่อกับเซิร์ฟเวอร์นั้นจำเป็นจริงๆ หรือไม่


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!