C#中Timer定時(shí)器類的簡(jiǎn)單使用
System.Timers.Timer
定時(shí)器就是經(jīng)過固定時(shí)間,執(zhí)行固定任務(wù)。
定時(shí)器簡(jiǎn)單使用
設(shè)置初始屬性
初始化定時(shí)器間隔多少時(shí)間執(zhí)行
System.Timers.Timer timer = new System.Timers.Timer(double interval);
interval是毫秒數(shù)。比如最后的毫秒數(shù)設(shè)為1000就是一秒。
也可以用無參構(gòu)造函數(shù)創(chuàng)建后,用對(duì)象.interval設(shè)置。
設(shè)置執(zhí)行的事件–Elapsed
timer.Elapsed += 需要方法名稱。
經(jīng)過上面設(shè)置好的毫秒后,執(zhí)行事件。比如我要在指定時(shí)間內(nèi)執(zhí)行方法MyMethod,使用該參數(shù)Elapsed進(jìn)行指定。timer.Elapsed += MyMethod。
該方法有且僅有兩個(gè)參數(shù)MyMethod(Object source, ElapsedEventArgs e)
,且返回值為void。 其中的ElapsedEventArgs 是給Elapsed事件提供數(shù)據(jù)的對(duì)象。
當(dāng)然了,你還可以再M(fèi)yMethod中調(diào)用其他的方法。
設(shè)置是否重復(fù)執(zhí)行–AutoReset
該參數(shù)的值類型為bool,默認(rèn)為false。
如果為false,該定時(shí)器只會(huì)在第一次經(jīng)過指定時(shí)間執(zhí)行一次Elapsed方法,后續(xù)再經(jīng)過指定時(shí)間間隔就不再執(zhí)行。
如果為true則每經(jīng)過時(shí)間間隔就執(zhí)行一次該方法。
設(shè)置是否觸發(fā)Elapsed事件–Enabled
該參數(shù)的值類型為bool,默認(rèn)為false。
如果為false,就算經(jīng)過指定事件也不觸發(fā)Elapsed事件。
若為true,經(jīng)過指定時(shí)間,執(zhí)行Elapsed事件。
簡(jiǎn)單示例–借用官方示例
using System; using System.Timers; public class TimerTest { ? ? //定義定時(shí)器 ? ? private static System.Timers.Timer aTimer; ? ? public static void Main() ? ? { ? ? ? ? //初始化定時(shí)器屬性 ? ? ? ? SetTimer(); ? ? ? ? Console.WriteLine("\n鍵盤輸入即可退出...\n"); ? ? ? ? Console.WriteLine("定時(shí)器開始于 {0:HH:mm:ss.fff}", DateTime.Now); ? ? ? ? Console.ReadLine();//保持程序持續(xù)運(yùn)行 ? ? ? ? aTimer.Stop();//停止定時(shí)器 ? ? ? ? Console.WriteLine("\n停止定時(shí)器...\n"); ? ? ? ? aTimer.Dispose();//釋放資源 ? ? ? ? Console.WriteLine("退出..."); ? ? ? ? Console.ReadLine(); ? ? } ? ? private static void SetTimer() ? ? { ? ? ? ? Console.WriteLine("初始化當(dāng)前的定時(shí)器"); ? ? ? ? // 創(chuàng)建一個(gè)兩秒一次的定時(shí)器 ? ? ? ? aTimer = new System.Timers.Timer(2000); ? ? ? ? // 設(shè)置事件 ? ? ? ? aTimer.Elapsed += MyMethod; ? ? ? ? aTimer.AutoReset = true; ? ? ? ? aTimer.Enabled = true; ? ? ? ? Console.WriteLine("設(shè)置完畢"); ? ? } ? ? public static void A() ? ? { ? ? ? ? //在這里寫真正的操作 ? ? ? ? Console.WriteLine("我定時(shí)執(zhí)行的操作A"); ? ? } ? ? private static void MyMethod(Object source , ElapsedEventArgs e) ? ? { ? ? ? ? //我真正需要執(zhí)行的操作 ? ? ? ? Console.WriteLine("當(dāng)前時(shí)間 {0:HH:mm:ss.fff}", DateTime.Now); ? ? ? ? Console.WriteLine("ElapsedEventArgs攜帶的數(shù)據(jù) {0:HH:mm:ss.fff}", e.SignalTime); ? ? ? ? A(); ? ? } }
結(jié)果
到此這篇關(guān)于C#中Timer定時(shí)器類的簡(jiǎn)單使用的文章就介紹到這了,更多相關(guān)C#中Timer定時(shí)器類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!