av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

講解定時器VB.NETSystem.Threading類

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

專注于為中小企業(yè)提供成都網(wǎng)站制作、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)馬鞍山免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

不像我開始描述的兩個定時器類,VB.NET System.Threading有四個重載構(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); 

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

 
 
 
  1. public void TimerCallback(object state);  

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

一旦構(gòu)造函數(shù)被調(diào)用,你仍然可以通過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);  

下面是我在例子程序中用到的開始和停止該定時器的代碼:

 
 
 
  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); 

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

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


當(dāng)前文章:講解定時器VB.NETSystem.Threading類
網(wǎng)頁URL:http://uogjgqi.cn/article/ccshjee.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流