1. 程式人生 > >C#中timer類的用法

C#中timer類的用法

關於C#中timer類  在C#裡關於定時器類就有3個   
1.定義在System.Windows.Forms裡   
2.定義在System.Threading.Timer類裡   
3.定義在System.Timers.Timer類裡 

System.Windows.Forms.Timer是應用於WinForm中的,它是通過Windows訊息機制實現的,類似於VB或Delphi中的Timer控制元件,內部使用API  SetTimer實現的。它的主要缺點是計時不精確,而且必須有訊息迴圈,Console  Application(控制檯應用程式)無法使用。   
  
System.Timers.Timer和System.Threading.Timer非常類似,它們是通過.NET  Thread  Pool實現的,輕量,計時精確,對應用程式、訊息沒有特別的要求。System.Timers.Timer還可以應用於WinForm,完全取代上面的Timer控制元件。它們的缺點是不支援直接的拖放,需要手工編碼。

例: 
使用System.Timers.Timer類 
//例項化Timer類,設定間隔時間為10000毫秒; 
System.Timers.Timer t = new System.Timers.Timer(10000);
//到達時間的時候執行事件;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout); 
t.AutoReset = true;//設定是執行一次(false)還是一直執行(true); 
t.Enabled = true;//是否執行System.Timers.Timer.Elapsed事件;

====================================
自己寫的一個用System.Timer類的方法

public class BF_CheckUpdate
 2     {
 3         private static object LockObject = new Object();
 4 
 5         // 定義資料檢查Timer
 6         private static Timer CheckUpdatetimer = new Timer();
 7 
 8         // 檢查更新鎖
 9         private static int CheckUpDateLock = 0;
10 
11         ///
12         /// 設定資料檢查Timer引數
13         ///
14         internal static void GetTimerStart()
15         {
16             // 迴圈間隔時間(10分鐘)
17             CheckUpdatetimer.Interval = 600000;
18             // 允許Timer執行
19             CheckUpdatetimer.Enabled = true;
20             // 定義回撥
21             CheckUpdatetimer.Elapsed += new ElapsedEventHandler(CheckUpdatetimer_Elapsed);
22             // 定義多次迴圈
23             CheckUpdatetimer.AutoReset = true;
24         }
25 
26         ///
27         /// timer事件
28         ///
29         ///
30         ///
31         private static void CheckUpdatetimer_Elapsed(object sender, ElapsedEventArgs e)
32         {
33            // 加鎖檢查更新鎖
34             lock (LockObject)
35             {
36                 if (CheckUpDateLock == 0) CheckUpDateLock = 1;
37                 else return;
38             }         
39           
40            //More code goes here.
41           //具體實現功能的方法
42            Check();
43               // 解鎖更新檢查鎖
44             lock (LockObject)
45             {
46                 CheckUpDateLock = 0;
47             }            
48         }
49 }


相關推薦

C#timer用法

關於C#中timer類  在C#裡關於定時器類就有3個    1.定義在System.Windows.Forms裡    2.定義在System.Threading.Timer類裡    3.定義在System.Timers.Timer類裡  System.Windows.Forms.Timer是應用於Wi

C# Datatime用法總結

C# 中Datatime類用法總結  收集了一些記錄下來,這些有的是從網上找的,有些是自己使用到的: DateTime dt = DateTime.Now; dt.ToString();//2005-11-5 13:21:25 dt.ToFileTime().ToString();

c++stringstream 用法及字串與數字之間轉化

iostream標準庫支援對於記憶體的輸入輸出,只要將流與儲存在程式記憶體中的string物件捆綁在一起,就可以使用通用的輸入輸出操作符來讀寫string物件!標準庫中定義了三種類型的字串流:istringstream,由istream派生出來的,用於讀一個string的物

c++vector用法

第一個元素 enc 類型 相對 tac iter 叠代器 分配 相同 概括:向量(Vector)是一個封裝了動態大小數組的順序容器(Sequence Container)。跟任意其它類型容器一樣,它能夠存放各種類型的對象。可以簡單的認為,向量是一個能夠存放任意類型的動態數組

C++的虛函數必需要實現嗎?

font virt ron rtu 實現 div -a 實例對象 ont 一、情景 C++中父類的虛函數必需要實現嗎? class Vir{ public: virtual void tryVirtual(); }; class CVir:public Vir{

C++模板詳細講述

技術 要求 ebe div spa 限制 dcb 模板的模板 文本文件 一、類模板定義及實例化 1. 定義一個類模板: 1 template<class 模板參數表>2 3 class 類名{4 5 // 類定義......6 7 };

C#問號的用法

變量 ring 返回 express () operator boolean per 泛型 1. 可空類型修飾符(?):   引用類型可以使用空引用表示一個不存在的值,而值類型通常不能表示為空。   例如: string str=null;是正確的。 int

C#HttpWebRequest的用法詳解

網站 default 編碼方式 對數 c# toarray collect acc like 本文實例講述了C#中HttpWebRequest的用法。分享給大家供大家參考。具體如下: HttpWebRequest類主要利用HTTP 協議和服務器交互,通常是通過 GET 和

C++class()與繼承白話學習筆記

double 價格 體積 blog 示例 mes nta size ext 1.class(類) class Drink{//定義飲料類 public://public下面的東西可以被外面訪問 char* type;//飲料種類

C#引用的就近原則

調用 data clas body 方式 但是 項目 mysql pos 應該是使用Mysql.Data中的MySqlConnection類,但是C#語法中有一個就近原則:優先使用項目本身的類。 所以這裏兩種解決方法: 第一種:使用命名空間加類名但方式區調用; 第

C#HashTable的用法

會有 string false border div hash 包含 tool each 首先,從命名空間開始 System.Collections 接下來進入正題.               Hashtable的常用方法和屬性:                     

C++虛析構函數的作用及其原理分析

art 收回 顯示 就是 靜態綁定 運行 style 轉載 調用父類 虛析構函數的理論前提是 執行完子類的析構函數,那麽父類的虛構函數必然會被執行。 那麽當用delete釋放一個父類指針所實例化的子類對象時,如果沒有定義虛析構函數,那麽將只會調用父類的析構函數,而不會調用子

C++的map用法詳解

時間 占用 sort函數 數組 例程 通道 組織 sso 查找 Map是 STL的一個關聯容器,它提供一對一(其中第一個可以稱為關鍵字,每個關鍵字只能在map中出現一次,第二個可能稱為該關鍵字的值)的數據 處理能力,由 於這個特性,它完成有可能在我們處理一對一數據的

【轉載】 c++static的用法詳解

ostream 並不會 style 轉載 程序員 都是 note 每次 reference 出處: http://blog.csdn.net/majianfei1023/article/details/45290467 C 語言的 static 關鍵字有三種(具體來說是

c#this的用法及作用

sys 靜態成員 mes 成員 成員方法 read 訪問 write stat 在C#中, 1. this關鍵字代表當前實例,我們可以用this.來調用當前實例的成員方法,變量,屬性,字段等; 2. 也可以用this來做為參數狀當前實例做為參

c++string的函數

str const 沒有 HR 匹配 OS 指針 第一個 size_t C/C++ string庫(string.h)提供了幾個字符串查找函數,如下: memchr 在指定內存裏定位給定字符 strchr 在指定字符串裏定位給定字符 strcspn 返回在字符串str1裏找

C++char型的十六進制字符串轉換成字節流

toupper 14. 轉換成 urn 類型 else con src for 如a[5]="1234"轉換成a[5]={0x12,0x34} 代碼如下: void HexStrToByte(const char* source, unsigned char* dest

C++型轉換

actually new CA 對象的引用 如果 四種 表達式 clu 方式 在C++語言中,類型轉換分位兩種:隱式類型轉換 和 顯式類型轉換。 1. 隱式類型轉換 隱式轉換就是系統默認的、不需要加以聲明就可以進行的轉換。一般情

C#和子之間相互轉換

mage all spa 分享 mic ack 子類 utl round 所用到的類文件:Person.cs:Student.cs:Teacher.cs:問題1:總結:1 父類不能直接強制轉換成子類2 只有父類對象指向子類,那麽父類是可以強制轉換成子類,如果父類對象沒有指向