成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為你解決VB.NET定時器編程線程安全問題

開發(fā) 后端
文章主要就VB.NET定時器編程問題來描述,為了最大限度的代碼重用,三種不同類型的定時器事件都調用了同樣的ShowTimerEventFired方法,下面就是三個定時器事件的處理函數。

經過長時間學習VB.NET,對于它還是很了解的,在這里和大家分享一下關于VB.NET定時器編程,看完本文你肯定有不少收獲,希望本文能教會你更多東西。

VB.NET定時器編程

為了***限度的代碼重用,三種不同類型的定時器事件都調用了同樣的ShowTimerEventFired方法,下面就是三個定時器事件的處理函數:

  1. private void tmrWindowsFormsTimer_Tick(object sender, System.EventArgse)  
  2. {   
  3. ShowTimerEventFired(DateTime.Now, GetThreadName());  
  4. }  
  5. private void tmrTimersTimer_Elapsed(object sender, System.TimersElapsedEventArgse){  
  6. ShowTimerEventFired(DateTime.Now, GetThreadName());  
  7. }  
  8. private void tmrThreadingTimer_TimerCallback(object state){ ShowTimerEventFired(DateTime.Now, GetThreadName());  

正如你所看到的,ShowTimerEventFired方法采用當前時間和當前線程名字作為參數。為了區(qū)別工作者線程和UI線程,在例子程序的主入口點設置CurrentThread對象的名字屬性為"UIThread"。GetThreadName幫助函數返回Thread.CurrentThread.Name值或者當Thread.CurrentThread.IsThreadPoolThread屬性為真時返回"WorkerThread"。

因為System.Timers.Timer和System.Threading.Timer的定時器事件都是在工作者線程上執(zhí)行的,所以在事件處理函數中的任何用戶交互代碼都不是馬上進行的,而是被列集等候返回到UI線程上進行處理。為了這樣做,我創(chuàng)建了一個ShowTimerEventFiredDelegate委托調用:

  1. private delegate void ShowTimerEventFiredDelegate (DateTime eventTime, string threadName); 

ShowTimerEventFiredDelegate允許ShowTimerEventFired方法在UI線程上調用它自己,顯示了發(fā)生這一切的代碼。

通過查詢InvokeRequired屬性可以非常容易的知道你是否從當前線程可以安全的訪問Windows窗體控件。在這個例子中,如果列表框的InvokeRequired屬性為真,窗體的BeginInvoke方法就可以被ShowTimerEventFired方法調用,然后再被ShowTimerEventFiredDelegate方法調用。這能夠保證列表框的Add方法在UI線程上執(zhí)行。

正如你所看到的,當你編寫異步定時器事件時有許多問題需要意識到。在使用System.Timers.Timer和System.Threading.Timer之前我推薦你閱讀Ian Griffith的文章“Windows Forms:Give Your .NET-based Application a Fast and Responsive UI with Multiple Threads”, 該文刊登在MSDN雜志的2003年2月份的期刊上。上述是一個關于VB.NET定時器編程線程安全上的問題的分析,提到的問題大家在編程中要注意。

【編輯推薦】

  1. 實例講述VB.NET使用Log4Net
  2. 三分鐘學會VB.NET轉換形態(tài)
  3. VB.NET獲取硬盤信息四大法寶
  4. 講述VB.NET調用Excel的好處
  5. 簡單例子概述VB.NET新窗體
責任編輯:田樹 來源: 賽迪網
相關推薦

2009-10-28 10:31:59

VB.NET Syst

2009-10-28 10:58:34

VB.NET定時器事件

2009-10-28 10:23:48

VB.NET定時器

2009-10-12 13:32:58

VB.NET線程構造器

2009-11-03 10:30:47

VB.NET繼承

2009-10-28 11:13:39

VB.NET虛擬框架

2009-10-20 10:59:32

VB.NET編程

2009-10-23 17:03:18

VB.NET事件編程

2009-10-12 14:32:40

VB.NET實現定時關

2009-11-10 13:03:45

VB.NET虛擬碼

2009-10-20 10:23:08

VB.NET多線程編程

2009-11-02 10:42:04

VB.NET EXCE

2009-11-10 13:08:13

VB.NET編程技巧

2010-01-14 17:11:17

VB.NET枚舉

2009-11-02 15:08:58

VB.NET Obje

2009-10-14 15:34:29

VB.NET窗體編程模

2009-10-12 13:19:14

VB.NET線程同步

2009-10-12 13:11:48

VB.NET使用線程

2009-11-02 15:16:07

VB.NET編程

2010-01-11 18:05:24

VB.NET窗體繼承
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美电影网 | 欧美日韩在线观看一区二区三区 | 91超碰在线| 国产真实乱对白精彩久久小说 | 成人亚洲精品久久久久软件 | 亚洲国产成人久久久 | 亚洲精品一二三区 | 国产精品亚洲精品日韩已方 | 综合精品 | 91视视频在线观看入口直接观看 | 99re视频| 国产精品1区2区3区 中文字幕一区二区三区四区 | 国产91精品久久久久久久网曝门 | 欧美午夜视频 | 黄色一级大片在线免费看产 | 欧美精品久久久 | 91av在线免费观看 | 国产美女特级嫩嫩嫩bbb片 | 久久精品成人热国产成 | 国产h视频 | 国产区免费视频 | 欧美一级免费片 | 一区二区三区四区不卡 | 亚州av在线| 欧美视频三区 | 日韩有码一区 | 久久av网 | 成人午夜在线 | 亚洲国产免费 | 中日字幕大片在线播放 | 免费性视频 | 久久精品免费一区二区 | 成人在线一区二区三区 | 天天看夜夜 | 欧美一区二区 | 日本免费一区二区三区视频 | 日韩欧美在线视频 | 成年人在线观看 | 国产日韩欧美一区二区在线播放 | 精品福利在线 | 亚洲综合三区 |