کنترل Timer جهت انجام يک سري اعمال در فواصل زماني مشخص، استفاده مي شود. در حقيقت با استفاده از اين کنترل مي توانيم يک تابع را در سمت سرور، در فواصل زماني مشخص، از سمت کلاينت فراخواني نماييم.
فرض کنيد که يک کنترل Label داريم که قرار است هر 3 ثانيه بروز رساني شود و تاريخ و زمان بروز رساني خود را نمايش دهد.
عملکرد اين کنترل را مي توانيد اينجا مشاهده نماييد.
به قطعه کد زير توجه نماييد.
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Timer ID="Timer1" runat="server" Interval="3000" OnTick="Timer1_Tick" />
<asp:Label ID="Label1" runat="server" Font-Names="Tahoma" ForeColor="Red" ></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
|
همانطور که ملاحظه مي نماييد، داخل اين صفحه ما يک UpdatePanel داريم که کنترل Timer و Label در داخل آن قرار دارند.
صفت Interval، فاصله زماني را که پس ازآن، کنترل Timer عمل خواهد کرد را نگهداري مي کند. در اينجا ما مدت زمان 3000 ميلي ثانيه يا در حقيقت 3 ثانيه را به آن نسبت داده ايم.
پس از گذشت هر 3 ثانيه، رويداد OnTick اتفاق مي افتد و تابع Timer1_Tick فراخواني مي شود.
قطعه کد زير عملکرد تابع ، Timer1_Tick را نشان مي دهد.
protected void Timer1_Tick(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToString();
}
|
در هنگام استفاده از کنترل Timer بايد دقت داشته باشيد که اگر به هر دليلي مانند قطع اينترنت يا ترافيک بالاي شبکه و غيره، فراخواني تابع Timer1_Tick با مشکل مواجه شود، در سمت کاربر يک خطاي استثنا (Exception) به وجود مي آيد و به طور متناوب به کاربر اين خطا به شکل صفحه ديالوگ، نمايش داده مي شود. لذا بايد براي کنترل خطاهاي به وجود آمده چاره اي بينديشيد که از حوزه بحث اين مقاله خارج مي باشد.
کنترل Timer داراي انعطاف پذيري زيادي نمي باشد و در نتيجه هنگام استفاده از اين کنترل در پروژه هاي کاربردي و حساس خود بايد کليه جوانب کار را بررسي نماييد.
کنترل عملکرد Timer در سمت کلاينت با استفاده از جاوااسکريپت :
عملکرد کنترل Timer را در سمت کلاينت مي توان با استفاده از جاوااسکريپت تغيير داد.
ابتدا بايد يک ارجاع به کنترل Timer در صفحه ايجاد کنيد. در قطعه کد زير اين مسئله را مشاهده مي نماييد.
var myTimer = $find('<%= Timer1.ClientID %>'); |
اکنون به سادگي با استفاده از myTimer مي توانيد رفتار کنترل Timer را تغيير دهيد.
//returns the Timer’s interval in milliseconds: var waitTime = myTimer.get_interval;
//sets the Timer’s interval to 5000 milliseconds (or 5 seconds): myTimer.set_interval(5000);
//returns whether or not the Timer is enabled: var isTimerEnabled = myTimer.get_enabled();
//disables the Timer: myTimer.set_enabled(false);
//starts the Timer: myTimer._startTimer();
//stops the Timer: myTimer._stopTimer();
|
مثال انجام شده در اين مقاله از لينک بالاي صفحه قابل دريافت مي باشد.