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

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

開發 后端
文章主要就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方法采用當前時間和當前線程名字作為參數。為了區別工作者線程和UI線程,在例子程序的主入口點設置CurrentThread對象的名字屬性為"UIThread"。GetThreadName幫助函數返回Thread.CurrentThread.Name值或者當Thread.CurrentThread.IsThreadPoolThread屬性為真時返回"WorkerThread"。

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

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

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

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

正如你所看到的,當你編寫異步定時器事件時有許多問題需要意識到。在使用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轉換形態
  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-12 13:32:58

VB.NET線程構造器

2009-10-28 10:23:48

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技術棧公眾號

主站蜘蛛池模板: 婷婷综合激情 | 久久国产精品一区二区 | 日本a∨精品中文字幕在线 亚洲91视频 | 欧美中文字幕 | 中文字幕在线精品 | 日本黄色一级片视频 | a毛片 | 中文字幕在线一区 | 999久久 | 国产一在线观看 | 亚洲精品二区 | 在线色网 | 在线观看视频一区 | 91在线中文字幕 | 精品视频一二区 | 欧美激情在线一区二区三区 | 搞av.com| 黄色av观看| 99精品久久 | 欧美一级久久 | 久久亚洲欧美日韩精品专区 | 国产精品福利久久久 | 色在线看 | 超碰人人插 | 成人3d动漫一区二区三区91 | 婷婷色国产偷v国产偷v小说 | 国产色网 | 亚洲区一区二区 | 国产欧美日韩一区 | 欧美午夜视频 | 日韩有码在线观看 | 亚洲一区二区三区在线 | 91香蕉| 国内精品视频在线观看 | 成人深夜福利网站 | 日韩网 | 91久久 | 色婷婷久久久久swag精品 | 操操网站 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 国产精品日韩在线观看 |