昨天有一个任务,就是要下载相关文件,然后保存在相关路径下,这个没什么难度,所以就略过不谈,主要谈谈定时下载,即每天某个固定时间执行下载,这个功能我是用C#代码来操作windows自带的任务计划来实现的,所以我简单的写了一个任务计划操作类,以下是代码主体部分,基本上可实现我需要的功能,当然,因为时间仓促,还不是很完善,我会尽量抽时间完善这个公共类,以便以后操作的时候,可以直接使用,废话说完,开始进入正题:

1,首先下载TaskScheduler.dll,然后将其添加到引用中。

2,然后下面是TaskSchedulerHandler.cs的代码,也就是满足我的需要的操作类

  1. /// <summary>
  2. /// @Date:12/10/2012
  3. /// @Author:Andy
  4. /// @Desciption:class of add,delete and select Task Scheduler
  5. /// </summary>
  6. public class TaskSchedulerHandler
  7. {
  8. public string hour;//task hour
  9. public string minute;//task minute
  10. public string interval;//task interval
  11. public string taskName;//Name of Task
  12. public string userName;//user to authorize the task
  13. public string userPwd;//password of user
  14. public TaskSchedulerHandler()
  15. {
  16. InitVariables();
  17. }
  18. /// <summary>
  19. /// Add Task to TaskScheduler
  20. /// </summary>
  21. public void AddTask()
  22. {
  23. if (!SelTask())
  24. {
  25. ScheduledTasks st = new ScheduledTasks();
  26. Task autoDownload = st.CreateTask(taskName);
  27. DailyTrigger dayTrigger = new DailyTrigger(Convert.ToInt16(hour), Convert.ToInt16(minute), Convert.ToInt16(interval));//get default config from app.config
  28. autoDownload.Triggers.Add(dayTrigger);
  29. //autoDownload.SetAccountInformation(userName, userPwd);//to authorize the console ro run
  30. autoDownload.ApplicationName = Assembly.GetExecutingAssembly().Location;
  31. //you can also modify the values in app.config
  32. //and publish it, then you can add the application name here
  33. //autoDownload.ApplicationName = "";
  34. autoDownload.Save();
  35. autoDownload.Close();
  36. }
  37. //else
  38. //{
  39. //    DelTask(taskName);
  40. //    AddTask();
  41. //}
  42. }
  43. /// <summary>
  44. /// Select Task from TaskScheduler
  45. /// </summary>
  46. /// <param name="taskName"></param>
  47. /// <returns></returns>
  48. public bool SelTask()
  49. {
  50. bool flag = false;
  51. ScheduledTasks st = new ScheduledTasks();
  52. string[] taskNameStr = st.GetTaskNames();
  53. foreach (string item in taskNameStr)
  54. {
  55. if (taskName == item.Split('.')[0])
  56. {
  57. flag = true;
  58. break;
  59. }
  60. }
  61. return flag;
  62. }
  63. /// <summary>
  64. /// Delete Task
  65. /// </summary>
  66. /// <param name="taskName"></param>
  67. public void DelTask(string taskName)
  68. {
  69. if (taskName != "" && taskName != null)
  70. {
  71. ScheduledTasks st = new ScheduledTasks();
  72. st.DeleteTask(taskName);
  73. }
  74. }
  75. /// <summary>
  76. /// Set Default Value for Variables
  77. /// </summary>
  78. public void InitVariables()
  79. {
  80. hour = ConfigurationManager.AppSettings["taskHour"];
  81. minute = ConfigurationManager.AppSettings["taskMinute"];
  82. interval = ConfigurationManager.AppSettings["interval"];
  83. taskName = ConfigurationManager.AppSettings["taskName"];
  84. userName = ConfigurationManager.AppSettings["taskUser"];
  85. userPwd = ConfigurationManager.AppSettings["taskPwd"];
  86. }
  87. }

这样,一个简单的任务计划操作类就完成了,简单说下,因为目前我的很多的值都需要存储在app.config中,以便日后修改或进行配置,所以我的变量大多是直接读取app.config中的值来实现赋值的,这也是下一步我打算完善的,希望把这个作为一个公共类,可以让其他人直接使用。

C#操作计划任务的更多相关文章

  1. Oracle SQL操作计划基线总结(SQL Plan Baseline)

    一.基础概念 Oracle 11g開始,提供了一种新的固定运行计划的方法,即SQL plan baseline,中文名SQL运行计划基线(简称基线),能够觉得是OUTLINE(大纲)或者SQL PRO ...

  2. 高抛低吸T+0操作要领(目前行情短线炒作的必备技能)

    最近的行情只能用操蛋来形容,但是危机中不乏机会.现在已经不是之前行情的思路,那着一个股票长线抱着,即使是好的牛股,也经不起目前行情的这 么折腾.所以,现在最适合的操作方式就是高抛低吸.今天低吸保不准明 ...

  3. 19. ClustrixDB 执行计划解读

    EXPLAIN语句用于显示ClustrixDB查询优化器(也称为Sierra)如何执行INSERT.SELECT.UPDATE和DELETE语句.EXPLAIN的输出有三列: Operation - ...

  4. Salesforce Consumer Goods Cloud 浅谈篇三之 行动计划(Action Plan)相关配置

    本篇参考: https://v.qq.com/x/page/f0772toebhd.html https://v.qq.com/x/page/e0772tsmtek.html https://v.qq ...

  5. Hive On Spark概述

    Hive现有支持的执行引擎有mr和tez,默认的执行引擎是mr,Hive On Spark的目的是添加一个spark的执行引擎,让hive能跑在spark之上: 在执行hive ql脚本之前指定执行引 ...

  6. linux端口详解

    Linux端口总结如下: 0|无效端口,通常用于分析操作系统 1|传输控制协议端口服务多路开关选择器 2|管理实用程序 3|压缩进程 5|远程作业登录 7|回显 9|丢弃 11|在线用户 13|时间 ...

  7. stock 当天盘势

    看盘 (一)怎样看大盘当天的指数收阴.收阳 投资者每天都看大盘,但多数人看不准大盘.大盘到底当天是收阴,还是收阳?我通过很长时间的记录.验证,发现大盘在正常时间内,收阴.收阳是有规律的.我判断的准确率 ...

  8. kali linux学习笔记(四) : 网络端口大全介绍

    端口大全介绍 2端口:管理实用程序 3端口:压缩进程 5端口:远程作业登录 7端口:回显 9端口:丢弃 11端口:在线用户 13端口:时间 17端口:每日引用 18端口:消息发送协议 19端口:字符发 ...

  9. 网络-01-端口号-linux端口详解大全

    0 | 无效端口,通常用于分析操作系统1 | 传输控制协议端口服务多路开关选择器2 | 管理实用程序3 | 压缩进程5 | 远程作业登录7 | 回显9 | 丢弃11 | 在线用户13 | 时间17 | ...

随机推荐

  1. 微信小程序的官方文档

    虽然不知道微信小程序今后的发展情况,不过做为一名it人员的我还是去了解它. 这是他的文档路径,里面有详细的使用和申请内测号的全部流程,这里就不再过多解释了. 看后那个开发小程序的文档记得分析你感觉微信 ...

  2. redis 集群 搭建

    环境: centos6.5 192.168.16.11 centos6.5 192.168.16.12 centos6.5 192.168.16.13 三台虚拟机模拟9个节点,一台机器3个节点,创建出 ...

  3. lua面向对象铺垫

    Account = { balance = , withdraw = function(self, v) self.balance = self.balance - v end } --:操作符隐藏了 ...

  4. 【转】AC神组合数取模大全

    貌似少了几张图片,不过没有图片也没什么关系的感觉. 最后的究极篇也想出来了,但是貌似找不到题目,好尴尬.. 这个表示的是从n个元素中选取m个元素的方案数. (PS.组合数求模似乎只用在信息学竞赛和 A ...

  5. android菜鸟学习笔记18----Android数据存储(二)SharedPreferences

    数据存储的方式,有比直接文件读写更加简便的方式,那就是操作SharedPreferences. SharedPreferences一般用于存储用户的偏好设定,暂时不支持多进程操作. SharedPre ...

  6. 电路分析二-------基尔霍夫定律KCL和KVL

    1.先了解几个名词 (1)支路----一个二端原件视为一条支路--图中6个二端原件所以有6条支路. (2)结点----两条或以上的支路连接的点. d,e可以看做一个结点. (3).回路----- (4 ...

  7. spring boot的对象注入

    1 需求 现在我们的项目中需要引入一个java类库,我想要很方便的使用该类库中的一个类,并且我想要创建这个类的一个单例对象.然后可以很方便的在各个模块中用@AutoWired进行对象注入. 比如一个配 ...

  8. 物理cpu和逻辑cpu

    1 物理cpu 插槽里面实际插入的cpu的个数. 通过不重复的physical id可以获取实际的物理cpu的个数. 2 逻辑cpu cat /proc/info processor 1 proces ...

  9. elk示例-精简版

    作者:Danbo 2016-03-09 1.Grok正则捕获 input {stdin{}} filter { grok { match => { "message" =&g ...

  10. FreeMarker使用后台枚举

    //页面使用枚举全路径访问 model.addAttribute("enums", BeansWrapper.getDefaultInstance().getEnumModels( ...