昨天有一个任务,就是要下载相关文件,然后保存在相关路径下,这个没什么难度,所以就略过不谈,主要谈谈定时下载,即每天某个固定时间执行下载,这个功能我是用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. SetTimer时间间隔的问题

    1.用WM_TIMER来设置定时器   SetTimer函数的原型 UINT_PTR SetTimer( HWND hWnd,                      // 窗体句柄 UINT_PT ...

  2. ActivityLifecycleCallbacks 如何控制activity的生命周期

    Android开发 - ActivityLifecycleCallbacks使用方法初探 初识 ActivityLifecycleCallbacks 利用ActivityLifecycleCallba ...

  3. StartUML

      原著:Stephen Wong            翻译:火猴 http://blog.csdn.net/monkey_d_meng/article/details/5995610    Sta ...

  4. Windows server2008 搭建ASP接口訪问连接oracle数据库全过程记录

    真的是太不easy了,曾经的时候在window server 2003上面搭建了一套asp+oracle的接口系统.就费了好大的劲儿,事实上那会迷迷瞪瞪的也不知道怎么的就弄好了,也懒得管了.OK,从昨 ...

  5. linux系统之间基于密钥对免输入密码登陆

    通常,我们登陆到一台linux主机是需要输入密码,这样可以验证登陆者的身份. 这篇随笔里面我打算记录一下配置基于ssh密钥对登陆系统.在配置之前先和大家说明一下我遇到过的问题:刚接触到linux时候首 ...

  6. 【HTML5开发系列】表单元素

    <form> 创建一个HTML表单 属性: action 表示提交表单时浏览器应该把用户填写的数据发送到什么地方 method 用来指定表单数据发送到服务器的方式.允许值有get和post ...

  7. 测试站如何最快获取正式站的最新数据: ln -s

    针对静态数据, 比如图片/js等文件, 测试站如何获取最新的呢? ln -s /alidata/www/mysite/uploads /alidata/www/mysite_test/uploads ...

  8. [luogu4755]Beautiful Pair

    [luogu4755]Beautiful Pair luogu 第一次写最大值分治感觉有点丑 每次找到最大值mid,扫小的一边,主席树查大的一边小于等于\(\frac{a[mid]}{a[i]}\)的 ...

  9. Action获取表单数据的三种方式

    1.使用ActionContext类获取 示例 获取用户提交的用户名和密码 jsp页面 action中的java代码 2.使用ServletActionContext类获取 jsp页面 Java代码 ...

  10. Gradle-jar-aar

    Ref:Android Studio系列教程 Ref:Android Studio系列教程四--Gradle基础 Ref:Intellij IDEA 14.x 中的Facets和Artifacts的区 ...