C#使用System.Threading.Timer實(shí)現(xiàn)計(jì)時(shí)器的示例詳解
寫(xiě)在前面
以往一般都是用 System.Timers.Timer 來(lái)做計(jì)時(shí)器,而 System.Threading.Timer 也可以實(shí)現(xiàn)計(jì)時(shí)器功能,并且還可以配置首次執(zhí)行間隔,在功能上比System.Timers.Timer更加豐富;根據(jù)這個(gè)特性就可以實(shí)現(xiàn)按指定時(shí)間間隔對(duì)委托進(jìn)行單次調(diào)用。 執(zhí)行的回調(diào)委托也是在 ThreadPool 線(xiàn)程上執(zhí)行,支持多線(xiàn)程運(yùn)行環(huán)境。
代碼實(shí)現(xiàn)
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
private static Timer timer;
static void Main(string[] args)
{
var dueTime = 1000; // 首次執(zhí)行延遲時(shí)間
var interval = 2000; // 后續(xù)執(zhí)行間隔時(shí)間
var timerState = new TimerState { Counter = 0 };
timer = new Timer(
callback: new TimerCallback(TimerTask),
state: timerState,
dueTime: dueTime,
period: interval);
Console.WriteLine($"{DateTime.Now:yyyy-MM-dd:HH:mm:ss.fff}: 準(zhǔn)備開(kāi)始執(zhí)行...");
while (timerState.Counter <= 10)
{
Task.Delay(1000).Wait();
}
timer.Dispose();
Console.WriteLine($"{DateTime.Now:yyyy-MM-dd:HH:mm:ss.fff}: 完成.");
}
private static void TimerTask(object timerState)
{
Console.WriteLine($"{DateTime.Now:yyyy-MM-dd:HH:mm:ss.fff}: 觸發(fā)了一次新的回調(diào).");
var state = timerState as TimerState;
Interlocked.Increment(ref state.Counter);
}
class TimerState
{
// 計(jì)數(shù)器
public int Counter;
}
}
調(diào)用示例

到此這篇關(guān)于C#使用System.Threading.Timer實(shí)現(xiàn)計(jì)時(shí)器的示例詳解的文章就介紹到這了,更多相關(guān)C#計(jì)時(shí)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#分析URL參數(shù)并獲取參數(shù)和值對(duì)應(yīng)列表的方法
這篇文章主要介紹了C#分析URL參數(shù)獲取參數(shù)和值對(duì)應(yīng)列表的方法,涉及C#進(jìn)行URL分析及正則表達(dá)式的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
c# 基于Titanium爬取微信公眾號(hào)歷史文章列表
這篇文章主要介紹了c# 基于Titanium爬取微信公眾號(hào)歷史文章列表,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-03-03
在Winform和WPF中注冊(cè)全局快捷鍵實(shí)現(xiàn)思路及代碼
如果注冊(cè)快捷鍵,RegisterHotKey中的fsModifiers參數(shù)為0,即None選項(xiàng),一些安全軟件會(huì)警報(bào),可能因?yàn)檫@樣就可以全局監(jiān)聽(tīng)鍵盤(pán)而造成安全問(wèn)題,感興趣的你可以參考下本文2013-02-02
.NET 開(kāi)發(fā)中如何通過(guò) C# 提取 PDF 中的圖片
本文介紹了如何使用FreeSpire.PDFfor.NET免費(fèi)庫(kù)從PDF文檔中提取圖片,提供了兩種典型場(chǎng)景的代碼示例,并強(qiáng)調(diào)了該方案的優(yōu)勢(shì),包括靈活可控、高效批量處理和輕量無(wú)依賴(lài),感興趣的朋友跟隨小編一起看看吧2026-02-02
C#創(chuàng)建線(xiàn)程帶參數(shù)的方法
本文給大家介紹C#創(chuàng)建線(xiàn)程帶參數(shù)的方法,包括無(wú)參數(shù)線(xiàn)程的創(chuàng)建,帶一個(gè)參數(shù)線(xiàn)程的創(chuàng)建及帶兩個(gè)及以上參數(shù)線(xiàn)程的創(chuàng)建,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧2016-07-07
C#難點(diǎn)逐個(gè)擊破(2):out返回參數(shù)
之前提到ref是將原方法中的參數(shù)影響的結(jié)果返回到調(diào)用它的方法中,out與ref類(lèi)似,相比之下,ref傳遞參數(shù)的地址,out是返回值。2010-02-02
C#使用XSLT實(shí)現(xiàn)xsl、xml與html相互轉(zhuǎn)換
這篇文章介紹了C#使用XSLT實(shí)現(xiàn)xsl、xml與html相互轉(zhuǎn)換的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06

