日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

C#中Timer定時(shí)器類的簡(jiǎn)單使用_C#教程

作者:三文魚先生 ? 更新時(shí)間: 2022-07-15 編程語言

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é)果

原文鏈接:https://blog.csdn.net/qq_44717657/article/details/123370355

欄目分類
最近更新