這篇文章利用C#實現定時小程式碼分享
之前一直覺得定時程式好神秘,後來,當我自己真正寫了一個小的定時程式時,發現其實沒有想像中的那麼難。下面,我分享一下自己的操作過程,希望能對大家有幫助。
1)在我們的專案中加入引用檔:TaskSchedulerEngine.dll(dll定義了一個ITask介面,定義了兩個方法Initialize和HandleConditionsMetEvent);
2)建立一個定時觸發的類別:SyncTask.cs(類別名稱自己隨便定義),該類別必須實作介面ITask。具體程式碼如下:
public class SyncTask : ITask { //接受传递过来的参数的变量 private string configName; /// <summary> /// 具体操作的代码 /// </summary> public void HandleConditionsMetEvent(object sender, ConditionsMetEventArgs e) { try { // 此处为具体的操作 } catch (Exception ex) { //抛出异常,记录错误日志 } } /// <summary> /// 初始化 /// </summary> /// <param name="schedule"></param> /// <param name="parameters">参数(该参数在定时触发设置时传递)</param> public void Initialize(ScheduleDefinition schedule, object parameters) { //通过传递过来的参数来初始化变量 configFileName = parameters.ToString(); try { //初始化的具体代码 } catch (Exception e) { //抛出异常,记录错误日志 } } }
3)設定app.config文件,設定檔的參數設定說明:
a. 02df3f2f2ebe8e75cc30d78a35e8053cca0aa28045db415e593515dbc7556910是一個Task,如果不同的時間觸發不同的程序,則需要設定多個02df3f2f2ebe8e75cc30d78a35e8053c; name:就是每個02df3f2f2ebe8e75cc30d78a35e8053c的名字,可以根據自己的需要隨便起名; month:該Task在哪個月份觸發,* 表示每個月都觸發;dayofMonth:每個月的幾號觸發,* 表示每天;dayOfWeek:每週幾觸發,* 表示每天都觸發;hour:每天的幾點觸發,* 表示每小時觸發一次;minute:每小時的幾分鐘觸發,58表示每小時的58分觸發;second:每分鐘的幾秒觸發。
b. 5a3616b73b29b6ef8523164b750a7aee是需要觸發的類,type:"需要觸發的類別所在的詳細地址(項目名.資料夾名.類名),項目名,Version,Culture,PublicKeyToKen",parameters:需要傳遞的參數,如果不傳遞參數可以設定為"" ;
<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)主程式來開啟定時程式:
SchedulerRuntime.StartWithConfig();
#OK ,到目前為止,一個完整的定時程序就寫完啦,小夥伴們,歡迎大家提出寶貴意見。
以上是利用C#實現定時小程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!