利用C#實現定時小程式碼分享

高洛峰
發布: 2017-03-14 16:25:02
原創
2280 人瀏覽過

這篇文章利用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.  是一個Task,如果不同的時間觸發不同的程序,則需要設定多個; name:就是每個的名字,可以根據自己的需要隨便起名; month:該Task在哪個月份觸發,* 表示每個月都觸發;dayofMonth:每個月的幾號觸發,* 表示每天;dayOfWeek:每週幾觸發,* 表示每天都觸發;hour:每天的幾點觸發,* 表示每小時觸發一次;minute:每小時的幾分鐘觸發,58表示每小時的58分觸發;second:每分鐘的幾秒觸發。

b. 是需要觸發的類,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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板