有時(shí)候,我們需要?jiǎng)?chuàng)建一個(gè)能以特定時(shí)間間隔運(yùn)行直至一個(gè)循環(huán)完成、或在經(jīng)過所設(shè)置的時(shí)間間隔后運(yùn)行的過程,就是需要?jiǎng)?chuàng)建一個(gè)計(jì)時(shí)器。Timer 組件使得我們很容易就可以達(dá)到目的,我們稱它為計(jì)時(shí)器控件。
在 Visual Studio .NET 和 .NET Framework 中有三種計(jì)時(shí)器控件:
1、基于 Windows 的標(biāo)準(zhǔn)計(jì)時(shí)器,位于“工具箱”的“Windows 窗體”選項(xiàng)卡上,以及僅可在編程時(shí)使用的線程計(jì)時(shí)器?;?Windows 的計(jì)時(shí)器從 Visual Basic 的 1.0 版起就存在于該產(chǎn)品中并且基本上保持不變。該計(jì)時(shí)器已經(jīng)為在 Windows 窗體應(yīng)用程序中使用而進(jìn)行了優(yōu)化。我們這篇文章將要了解這種計(jì)時(shí)器。Windows 計(jì)時(shí)器位于 System.Windows.Forms 命名空間中。
2、基于服務(wù)器的計(jì)時(shí)器,位于“工具箱”的“組件”選項(xiàng)卡上;基于服務(wù)器的計(jì)時(shí)器是傳統(tǒng)的計(jì)時(shí)器為了在服務(wù)器環(huán)境上運(yùn)行而優(yōu)化后的更新版本。服務(wù)器計(jì)時(shí)器位于 System.Timers 命名空間中。
3、線程計(jì)時(shí)器是一種簡單的、輕量級(jí)計(jì)時(shí)器,使用回調(diào)方法而不是事件,并由線程池線程提供。線程計(jì)時(shí)器位于 System.Threading 命名空間中。
一、為窗體設(shè)計(jì)計(jì)時(shí)器過程
1、從工具箱的“Windows 窗體”選項(xiàng)卡中選擇“Timer”(計(jì)時(shí)器)Timer 組件圖標(biāo)如下圖一所示:
然后把它拖到窗體中,因?yàn)門imer組件是無界面組件,所以顯示在組件欄中,如下圖二所示:
2、為計(jì)時(shí)器設(shè)置 Interval 屬性(以毫秒為單位)。該屬性決定在再次運(yùn)行該過程之前所經(jīng)過的時(shí)間。注意 計(jì)時(shí)器事件發(fā)生越頻繁,用于響應(yīng)該事件的處理器時(shí)間就越長。這會(huì)降低整體性能。請(qǐng)勿將間隔設(shè)置得比所需值小。
3、在 Tick 事件二、示例
1、把一個(gè)Timer組件、一個(gè)Label控件、一個(gè)Button控件拖放到窗體上。
2、在Form1類的內(nèi)部任何過程之前添加計(jì)數(shù)變量:
Private counter As Integer
3、添加Timer組件初始化過程
Private Sub InitializeTimer()
counter = 0
Timer1.Interval = 600
Timer1.Enabled = True
End Sub
4、添加Timer組件的Tick事件,當(dāng)計(jì)數(shù)器大于等于10,計(jì)時(shí)器停止
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If counter >= 10 Then
'當(dāng)計(jì)數(shù)器大于等于10,計(jì)時(shí)器停止
Timer1.Enabled = False
counter = 0
Button1.Text = "開始"
Else
counter = counter + 1
Label1.Text = "Procedures Run: " & counter.ToString
End If
End Sub
5、Button按鈕的Text屬性設(shè)置為“開始”,為Button控件的Click事件添加運(yùn)行Timer的事件,代碼如下:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If Button1.Text = "停止" Then Button1.Text = "開始" Timer1.Enabled = False Else Button1.Text = "停止" Timer1.Enabled = True End If End Sub
處理程序內(nèi)編寫合適的代碼。在該事件中編寫的代碼將以 Interval 屬性中所指定的間隔運(yùn)行。
4、將 Enabled 屬性設(shè)置為 true 以啟動(dòng)計(jì)時(shí)器。Tick 事件將開始發(fā)生,以設(shè)置的間隔運(yùn)行過程。
5、合適的時(shí)候,將 Enabled 屬性設(shè)置為 false,以停止再次運(yùn)行過程。將間隔設(shè)置為 0,并不會(huì)導(dǎo)致計(jì)時(shí)器停止。
二、示例
1、把一個(gè)Timer組件、一個(gè)Label控件、一個(gè)Button控件拖放到窗體上。
2、在Form1類的內(nèi)部任何過程之前添加計(jì)數(shù)變量:
Private counter As Integer
3、添加Timer組件初始化過程
Private Sub InitializeTimer()
counter = 0
Timer1.Interval = 600
Timer1.Enabled = True
End Sub
4、添加Timer組件的Tick事件,當(dāng)計(jì)數(shù)器大于等于10,計(jì)時(shí)器停止
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If counter >= 10 Then
'當(dāng)計(jì)數(shù)器大于等于10,計(jì)時(shí)器停止
Timer1.Enabled = False
counter = 0
Button1.Text = "開始"
Else
counter = counter + 1
Label1.Text = "Procedures Run: " & counter.ToString
End If
End Sub
5、Button按鈕的Text屬性設(shè)置為“開始”,為Button控件的Click事件添加運(yùn)行Timer的事件,代碼如下:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If Button1.Text = "停止" Then Button1.Text = "開始" Timer1.Enabled = False Else Button1.Text = "停止" Timer1.Enabled = True End If End Sub
聯(lián)系客服