C# task和timer实现定时操作
C#中,定時器,或者叫作間隔器,每隔一段時間執(zhí)行一個操作。
1.Timer本身就是多線程
C#中為不同場合下使用定時器,提供了不同的Timer類,在asp.net中一般使用System.Timers.Timer。
這個類也很簡單,在微軟官方文檔可以查看如何使用。
C#的timer,本身就封裝了線程的操作,所以使用timer不用考慮再開一個線程,它已經(jīng)是了。
2.Task實現(xiàn)定時器
我們可以使用task來完成程序中的異步操作,也可以使用task來制作一個定時器。
Task.Run(() =>{while (true){Console.WriteLine(1);Thread.Sleep(1000);}});這代碼很好理解,開啟一個線程,在線程里面永遠循環(huán),每次打印1后該線程停1秒后繼續(xù)判斷while(true),為真后繼續(xù)執(zhí)行。
3.定時器的使用場合
一般使用定時器,都是想要多次執(zhí)行的,而不是執(zhí)行一次之后就銷毀這個定時器,所以我們只考慮定時器多次執(zhí)行的情況。
定時器使用的兩種場合:
(1)隔段時間操作一次。比如寫日志,隔個0.5秒寫一次。
(2)到點執(zhí)行。這和你間隔的時間有關(guān),并且需要在定時器中進行判斷,比如你08:00執(zhí)行一次操作,你的時間間隔是60秒,那你可以在定時器中判斷DateTime.Now>=08:00&&DateTime.Now<08:01,這樣就能保證你每天只在8點到8點1分內(nèi)執(zhí)行操作,每天只執(zhí)行一次。
要注意,沒有絕對的準時,定時器的精準度是和機器有關(guān)的。
4.數(shù)據(jù)安全問題
定時器時通過多線程實現(xiàn)的自然有關(guān)于多線程的數(shù)據(jù)安全問題。
?
轉(zhuǎn)載于:https://www.cnblogs.com/gdpw/p/9208389.html
總結(jié)
以上是生活随笔為你收集整理的C# task和timer实现定时操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ‘ascii‘ codec can‘t
- 下一篇: C# 连接SQL数据库以及操作数据库