C#一個(gè)簡單的定時(shí)小程序?qū)崿F(xiàn)代碼
之前一直覺得定時(shí)程序好神秘,后來,當(dāng)我自己真正寫了一個(gè)小的定時(shí)程序時(shí),發(fā)現(xiàn)其實(shí)沒有想象中的那么難。下面,我分享一下我自己的操作過程,希望能對(duì)大家有幫助。
1)在我們的項(xiàng)目中添加引用文件:TaskSchedulerEngine.dll(dll定義了一個(gè)ITask接口,定義了兩個(gè)方法Initialize和HandleConditionsMetEvent);
2)創(chuàng)建一個(gè)定時(shí)觸發(fā)的類:SyncTask.cs(類名自己隨便定義),該類必須實(shí)現(xiàn)接口 ITask。具體代碼如下:
public class SyncTask : ITask { //接受傳遞過來的參數(shù)的變量 private string configName; /// <summary> /// 具體操作的代碼 /// </summary> public void HandleConditionsMetEvent(object sender, ConditionsMetEventArgs e) { try { // 此處為具體的操作 } catch (Exception ex) { //拋出異常,記錄錯(cuò)誤日志 } } /// <summary> /// 初始化 /// </summary> /// <param name="schedule"></param> /// <param name="parameters">參數(shù)(該參數(shù)在定時(shí)觸發(fā)設(shè)置時(shí)傳遞)</param> public void Initialize(ScheduleDefinition schedule, object parameters) { //通過傳遞過來的參數(shù)來初始化變量 configFileName = parameters.ToString(); try { //初始化的具體代碼 } catch (Exception e) { //拋出異常,記錄錯(cuò)誤日志 } } }
3)配置app.config文件,配置文件的參數(shù)設(shè)置說明:
a. <at></at>是一個(gè)Task,如果不同的時(shí)間觸發(fā)不同的程序,則需要設(shè)置多個(gè)<at>; name:就是每個(gè)<at>的名字,可以根據(jù)自己的需要隨便起名; month:該Task在哪個(gè)月份觸發(fā),* 表示每個(gè)月都觸發(fā) ;dayofMonth:每個(gè)月的幾號(hào)觸發(fā),* 表示每天;dayOfWeek:每周幾觸發(fā),* 表示每天都觸發(fā);hour:每天的幾點(diǎn)觸發(fā),* 表示每小時(shí)觸發(fā)一次;minute:每小時(shí)的幾分鐘觸發(fā),58表示每小時(shí)的58分觸發(fā);second:每分鐘的幾秒觸發(fā)。
b. <task>是需要觸發(fā)的類,type:"需要觸發(fā)的類所在的詳細(xì)地址(項(xiàng)目名.文件夾名.類名),項(xiàng)目名,Version,Culture,PublicKeyToKen",parameters:需要傳遞的參數(shù),如果不傳遞參數(shù)可以設(shè)置為"" ;
<taskSchedulerEngine> <schedule> <at name="TaskName" month="*" dayOfMonth="*" dayOfWeek="*" hour="*" minute="58" second="0" kind="Local"> <execute> <task type="Test.Task.SyncTask, Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" parameters="FtpConfig.xml" /> </execute> </at> </schedule> </taskSchedulerEngine>
4)主程序來開啟定時(shí)程序:
SchedulerRuntime.StartWithConfig();
OK,到現(xiàn)在為止,一個(gè)完整的定時(shí)程序就寫完啦,小伙伴們,歡迎大家提出寶貴意見。
- C#實(shí)現(xiàn)老板鍵功能的代碼
- C#生成Word文檔代碼示例
- C#實(shí)現(xiàn)關(guān)閉其他程序窗口或進(jìn)程代碼分享
- C#判斷某個(gè)軟件是否已安裝實(shí)現(xiàn)代碼分享
- C#實(shí)現(xiàn)的json序列化和反序列化代碼實(shí)例
- C#代碼性能測(cè)試類(簡單實(shí)用)
- C#對(duì)稱加密(AES加密)每次生成的結(jié)果都不同的實(shí)現(xiàn)思路和代碼實(shí)例
- C#實(shí)現(xiàn)開機(jī)自動(dòng)啟動(dòng)設(shè)置代碼分享
- C#對(duì)文件進(jìn)行加密解密代碼
- C#之IO讀寫文件方法封裝代碼
- C#獲取網(wǎng)頁源代碼的方法
- 10個(gè)C#程序員經(jīng)常用到的實(shí)用代碼片段
相關(guān)文章
Unity?UGUI的PhysicsRaycaster物理射線檢測(cè)組件介紹使用
這篇文章主要介紹了Unity?UGUI的PhysicsRaycaster物理射線檢測(cè)組件的介紹及使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07C#實(shí)現(xiàn)頁面GZip或Deflate壓縮的方法
這篇文章主要介紹了C#實(shí)現(xiàn)頁面GZip或Deflate壓縮的方法,涉及C#通過GZipStream與DeflateStream實(shí)現(xiàn)頁面壓縮的相關(guān)技巧,需要的朋友可以參考下2015-06-06詳解C#設(shè)置Excel數(shù)據(jù)自適應(yīng)行高、列寬的2種情況
這篇文章主要介紹了C#設(shè)置Excel數(shù)據(jù)自適應(yīng)行高、列寬的2種情況,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04C#制作鷹眼的詳細(xì)全過程(帶注釋)實(shí)例代碼
C#制作鷹眼的詳細(xì)全過程(帶注釋)實(shí)例代碼,需要的朋友可以參考一下2013-03-03C#實(shí)現(xiàn)功能強(qiáng)大的中國農(nóng)歷日歷操作類
這篇文章主要介紹了C#實(shí)現(xiàn)功能強(qiáng)大的中國農(nóng)歷日歷操作類,實(shí)例分析了C#操作時(shí)間及字符串的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03C# 未將對(duì)象引用設(shè)置到對(duì)象的實(shí)例
c#開發(fā)過程中出現(xiàn)未將對(duì)象引用設(shè)置到對(duì)象的實(shí)例,錯(cuò)誤一般是下面的原因,軟件中也是因?yàn)闆]有獲取到數(shù)據(jù)導(dǎo)致,需要的朋友可以參考下2022-09-09