網(wǎng)站首頁 編程語言 正文
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
相關(guān)推薦
- 2023-03-27 python去除空格,tab制表符和\n換行符的小技巧分享_python
- 2022-02-03 CentOS7啟動(dòng)報(bào)錯(cuò):“A start job is running for /etc/rc.d/
- 2022-11-08 uni.showToast和uni.navigateTo不能同時(shí)執(zhí)行 , 怎么解決
- 2022-08-04 react使用mobx封裝管理用戶登錄的store示例詳解_React
- 2023-03-01 PostgreSQL生成列實(shí)現(xiàn)過程介紹_PostgreSQL
- 2023-07-27 TypeScript類和多態(tài)、抽象類、訪問修飾符
- 2023-05-31 E:?無法定位軟件包?python3-pip問題及解決_python
- 2022-05-15 Element框架里日期選擇器限制時(shí)間,最多選31天
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支