自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

講解定時(shí)器VB.NET System.Threading類

開(kāi)發(fā) 后端
這里為大家介紹了VB.NET System.Threading有四個(gè)重載構(gòu)造函數(shù),一旦構(gòu)造函數(shù)被調(diào)用,你仍然可以通過(guò)Change方法改變dueTime和period。

之前我們將了關(guān)于定時(shí)器System.Windows.Forms.Timer類的講解,今天我們大家來(lái)看和它類似的另一個(gè)VB.NET System.Threading 。這個(gè)定時(shí)器類來(lái)自System.Threading名字空間。我愿意說(shuō)這是所有定時(shí)器類中最好的一個(gè),但這會(huì)引起誤導(dǎo)。舉一個(gè)例子,我驚訝的發(fā)現(xiàn)對(duì)于駐留在VB.NET System.Threading名字空間的這個(gè)類天生就不是線程安全的。(很明顯,這不意味著它不能以線程安全的方式使用)。這個(gè)類的可編程接口同其它兩個(gè)類也不一致,它稍微有點(diǎn)麻煩。

不像我開(kāi)始描述的兩個(gè)定時(shí)器類,VB.NET System.Threading有四個(gè)重載構(gòu)造函數(shù),就像下面這樣:

  1. public Timer(TimerCallback callback, object state, long dueTime, long period);  
  2. public Timer(TimerCallback callback, object state, UInt32 dueTime, UInt32 period);  
  3. public Timer(TimerCallback callback, object state, int dueTime, int period);  
  4. public Timer(TimerCallback callback, object state, TimeSpan dueTime, TimeSpan period); 

第一個(gè)參數(shù)(callback)要求一個(gè)TimerCallback的委托,它指向一個(gè)方法,該方法具有下面的結(jié)構(gòu):

  1. public void TimerCallback(object state);  

第二個(gè)參數(shù)(state)可以為空或者是包含程序規(guī)范信息的對(duì)象。在每一個(gè)定時(shí)器事件被調(diào)用時(shí)該state對(duì)象作為一個(gè)參數(shù)傳遞給你的定時(shí)回調(diào)函數(shù)。記住定時(shí)回調(diào)功能是在一個(gè)工作者線程上執(zhí)行的,所以你必須確保訪問(wèn)state對(duì)象的線程安全。
第三個(gè)參數(shù)(dueTime)讓你定義一個(gè)引發(fā)初始定時(shí)器事件的時(shí)間。你可指定一個(gè)0立即開(kāi)始定時(shí)器或者阻止定時(shí)器自動(dòng)的開(kāi)始,你可以使用VB.NET System.Threading.Timeout.Infinite常量。
第四個(gè)參數(shù)(period)讓你定義一個(gè)回調(diào)函數(shù)被調(diào)用的時(shí)間間隔(毫秒)。給該參數(shù)定義一個(gè)0或者Timeout.Infinite可以阻止后續(xù)的定時(shí)器事件調(diào)用。

一旦構(gòu)造函數(shù)被調(diào)用,你仍然可以通過(guò)Change方法改變dueTime和period。該方法有下面四種重載形式:

  1. public bool Change(int dueTime, int period);public bool Change(uint dueTime, uint period);  
  2. public bool Change(long dueTime, long period);public bool Change(TimeSpan dueTime, TimeSpan period);  

下面是我在例子程序中用到的開(kāi)始和停止該定時(shí)器的代碼:

  1. //Initialize the timer to not start automatically...System.Threading.Timer tmrThreadingTimer = newSystem.Threading.
    Timer(new TimerCallback(tmrThreadingTimer_TimerCallback), null, System.Threading.Timeout.Infinite, 1000);  
  2. //Manually start the timer...tmrThreadingTimer.Change(0, 1000);  
  3. //Manually stop the timer...tmrThreadingTimer.Change(Timeout.Infinte, Timeout.Infinite); 

正如你所期望的那樣,通過(guò)選擇VB.NET System.Threading.Timer類運(yùn)行例子程序會(huì)產(chǎn)生同你看到的System.Timers.Timer類一樣的輸出結(jié)果。因?yàn)門(mén)imerCallback功能也是在工作者線程上被調(diào)用,沒(méi)有一個(gè)跳動(dòng)被跳過(guò)(假設(shè)有工作者線程可用)。Figure 5顯示了例子程序的輸出結(jié)果。

不像System.Timers.Timer類,沒(méi)有與SynchronizingObject相對(duì)應(yīng)的屬性被提供。任何請(qǐng)求訪問(wèn)UI控件的操作都必須通過(guò)控件的Invoke或BeginInvoke方法被列集

【編輯推薦】

  1. 實(shí)例講述VB.NET使用Log4Net
  2. 三分鐘學(xué)會(huì)VB.NET轉(zhuǎn)換形態(tài)
  3. VB.NET獲取硬盤(pán)信息四大法寶
  4. 講述VB.NET調(diào)用Excel的好處
  5. 簡(jiǎn)單例子概述VB.NET新窗體
責(zé)任編輯:田樹(shù) 來(lái)源: 賽迪網(wǎng)
相關(guān)推薦

2009-10-28 10:23:48

VB.NET定時(shí)器

2009-11-03 09:09:19

VB.NET類

2009-10-28 10:42:02

VB.NET定時(shí)器編程

2010-01-11 16:04:10

VB.NET使用wit

2009-10-20 10:16:24

VB.NET COMB

2009-10-28 10:58:34

VB.NET定時(shí)器事件

2009-10-23 13:10:14

VB.NET List

2009-10-12 13:54:22

VB.NET Data

2009-10-15 11:42:05

VB.Net賦值語(yǔ)句

2009-10-14 17:21:47

VB.NET定制Win

2009-10-13 14:42:30

VB.NET靜態(tài)成員

2010-01-18 18:20:49

VB.NET使用API

2009-10-12 14:32:40

VB.NET實(shí)現(xiàn)定時(shí)關(guān)

2009-11-02 16:30:29

VB.NET構(gòu)造器

2009-10-20 09:39:04

VB.NET Butt

2010-01-12 16:20:44

VB.NET類

2009-10-13 14:50:59

VB.NET Envi

2009-10-20 17:38:54

VB.NET Comp

2009-10-10 17:06:09

VB和VB.NET

2009-10-28 13:24:25

VB.NET文件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)