对于定时任务的处理方法一般有两种 自定义windows service和设置计划任务
两种方案比较:
自定义Windows Service:
优点:灵活度比较高,定时任务可以保存在数据库中也可以在config文件中。可以另外写一个可视的配置小程序来帮助用户(管理员)来管理。运行结果也方便跟踪。发布的时候配置一次即可。
缺点:需要额外的编码来读取配置的定时任务并运行相应的程序,同时需要记录运行结果
利用windows计划任务
优点:节省开发时间
缺点:对系统依赖程度较高;配置稍微麻烦一些,特别是需要配置多种计划任务的情况,对用户(系统管理员)来说比较麻烦;计划任务是否按时启动需要考启动程序的log来查看,windows的计划任务本身的log只有4k,而且是循环使用,用来判断计划任务是否启动不太可靠。
SchTasks使用说明:
示例:
删除:SCHTASKS /DELETE /TN ScheduleTaskTest /F
创建:SCHTASKS /Create /RU SYSTEM /TN ScheduleTaskTest /SC MONTHLY /D 1 /ST 00:00:00 /TR "C:\Solution\TestApp\Bin\Debug\TestApp.exe /Method Test"
参数说明:
/sc Schedule Type
指定计划类型。有效值为 MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY、ONCE、ONSTART、ONLOGON、ONIDLE。
MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY 指定计划的时间单位。
ONCE 任务在指定的日期和时间运行一次。
ONSTART 任务在每次系统启动的时候运行。可以指定启动的日期,或下一次系统启动的时候运行任务。
ONLOGON 每当用户(任意用户)登录的时候,任务就运行。可以指定日期,或在下次用户登录的时候运行任务。
ONIDLE 只要系统空闲了指定的时间,任务就运行。可以指定日期,或在下次系统空闲的时候运行任务。
/tn Task Name
指定任务的名称。系统上的每项任务都必须具有一个唯一的名称。名称必须符合文件名称规则
/tr Task to Run
指定任务运行的程序或命令。键入可执行文件、脚本文件或批处理文件的完全合格的路径和文件名。路径名称不得超过 262 个字符。如果忽略该路径,SchTasks 将假定文件在 Systemroot\System32 目录下。
/ru {[Domain\]User | System}
使用指定用户帐户的权限运行任务。默认情况下,使用本地计算机当前用户的权限,或者使用 /u 参数指定的用户的权限(如果包含的话)运行任务。在本地或远程计算机上计划任务时,/ru 参数才有效。
可设置值说明:
[Domain\]User 指定候选用户帐户。
System 指定 Local System 帐户,这是一种操作系统和系统服务使用的具有高度特权的帐户。
/sd StartDate
可选, 指定任务计划开始的日期。默认值为本地计算机上的当前日期。
其实windows还提供了另外一个指令创建计划任务AT,不过AT指令会自动给计划任务起名字,不支持指定名称,用来做脚本就不太显示,这里就不多说这条指令了。