這里是你想要的功能:
- 支持插件,將你要執行的任務編譯成程序集放到框架的根目錄下,再進行簡單的配置就行了。
- 支持Corn表達式。想讓任務在什么時候執行就在什么時候執行。
- 支持安裝成windows service (通過topshelf實現)
- 保證任務在執行階段,就算到了下一個觸發時間,不重復執行(如果本次還沒執行完的話)。
- 還有…等我想到了再實現^o^,您也可以關注項目的地址:https://github.com/leleroyn/Windows-TaskSchedule,提出你想要的功能。
簡單介紹下項目的使用:
編寫插件支持
需要實現框架中的Ijob接口,框架中內置了一個簡單的不能再簡單的示例任務。直接看代碼:
IJob
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5:
6: namespace Windows.TaskSchedule
7: {
8: public interface IJob
9: {
10: void Init();
11: void Excute();
12: void OnError(Exception ex);
13: }
14: }
DemoJob
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5:
6: namespace Windows.TaskSchedule
7: {
8: public class DemoJob:IJob
9: {
10: static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(DemoJob));
11: DateTime date = new DateTime();
12: public void Init()
13: {
14: date = DateTime.Now;
15: }
16:
17: public void Excute()
18: {
19: logger.Debug(date);
20: }
21:
22: public void OnError(Exception ex)
23: {
24: logger.Debug(ex.ToString());
25: }
26: }
27: }
配置插件到框架中執行
通過修改configs目錄下的Jobs.config文件,讓框架識別你的任務。
Jobs.config
1: <?xml version="1.0" encoding="utf-8" ?>
2: <Jobs serverName="demo-server" displayName="測試服務" description="測試服務的描述">
3: <Job name="demoJob1" type="Windows.TaskSchedule.DemoJob,Windows.TaskSchedule" cornExpress="0/3 * * * * ?" />
4: </Jobs>
參數說明:
serverName:發布成服務時的服務名稱(最好不要有空格)
displayName:發布成服務時的服務顯示名稱
description:發布成服務時的服務描述
Job節點就是各個任務的具體配置了,name:任務的名稱(最好唯一),type:插件的具體實例與程序集,cornExpress:任務執行的時間,只支持corn表達式
執行任務
如果是開發調試階段,可以直接啟動Windows.TaskSchedule.exe 這樣可以直接在控制台輸出相關信息。
如果要部署成windows服務,需要在命令行下 先執行Windows.TaskSchedule.exe install 進行安裝,然后啟動:Windows.TaskSchedule.exe start
卸載windows服務也很簡單,直接執行 Windows.TaskSchedule.exe uninstall 具體可參考topshelf組件的使用方法。http://topshelf-project.com/
想要源碼,如果你細心的話在文章的開頭就應該有啦,我還是貼一下地址吧:https://github.com/leleroyn/Windows-TaskSchedule