C# 实现自定义任务调度器
需积分: 10 18 浏览量
更新于2024-09-09
收藏 8KB TXT 举报
C# 代码片段展示了如何在Windows操作系统中使用C#编程语言来创建自定义任务调度器。该代码主要关注`Microsoft.Win32.TaskScheduler`命名空间中的类,用于管理任务计划程序(Task Scheduler)。以下是对这段代码的重要知识点的详细解析:
1. 引用库:`using System;` 和 `using System.Linq;` 是为了使用基本的.NET框架功能,如LINQ查询,而 `using Microsoft.Win32.TaskScheduler;` 是直接与Windows任务调度API交互的关键部分。
2. 类结构:
- `CustomTaskScheduler` 类定义了私有静态变量 `m_Task`,表示单例模式的实例,用于确保在整个应用程序中只有一个`TaskScheduler`对象。
- `GetInstance()` 方法是静态方法,返回唯一的`CustomTaskScheduler`实例。如果 `m_Task` 为空,则创建一个新的实例。
3. 常量定义:
- `TIME_FORMAT` 定义了时间格式字符串,如 "HH:mm"。
- `TIME_DEFAULT` 设置了默认的运行时间,这里为 "8:00"。
- `TASK_NAME` 是任务的名称,例如执行的可执行文件名。
4. 创建任务方法:`Create(string runTime)` 方法接收一个字符串参数 `runTime`,用于设置任务的运行时间。首先检查 `runTime` 是否为空或长度不足,然后进行以下操作:
- 初始化 `TaskService` 对象,这是用来与任务调度服务通信的桥梁。
- 创建一个新的 `TaskDefinition` 对象,定义任务的基本属性,如任务描述、启动条件(仅在计算机处于AC电源时启动)等。
- 设置 `TaskSettings`,包括是否允许在电池模式下启动、是否在切换到电池供电时停止以及是否唤醒计算机以运行任务。
- 使用 `DailyTrigger` 类创建一个每日触发器,每天执行一次,通过 `DaysInterval` 属性指定间隔为1天。
- 将触发器的时间边界 `StartBoundary` 设置为传递的 `runTime` 参数转换为 `DateTime` 对象,以便确定任务的具体启动时间。
5. 任务调度逻辑:这个代码片段的核心功能是创建一个定期运行的任务,当满足特定条件(如计算机在AC电源下运行)时,会在用户指定的时间执行指定的程序(在这里,是可执行文件)。
总结:这段C#代码展示了如何在Windows环境中利用C#编写任务计划程序,以实现定时执行特定任务的功能。它涉及单例设计、任务定义、触发器设置以及与Windows任务调度API的交互。这对于自动化运维、定时任务执行或创建后台服务等方面具有实用价值。
2020-09-03 上传
2016-11-09 上传
2011-04-26 上传
2010-02-08 上传
2012-01-18 上传
2011-08-24 上传
cendrillon
- 粉丝: 14
- 资源: 19
最新资源
- Fisher Iris Setosa数据的主成分分析及可视化- Matlab实现
- 深入理解JavaScript类与面向对象编程
- Argspect-0.0.1版本Python包发布与使用说明
- OpenNetAdmin v09.07.15 PHP项目源码下载
- 掌握Node.js: 构建高性能Web服务器与应用程序
- Matlab矢量绘图工具:polarG函数使用详解
- 实现Vue.js中PDF文件的签名显示功能
- 开源项目PSPSolver:资源约束调度问题求解器库
- 探索vwru系统:大众的虚拟现实招聘平台
- 深入理解cJSON:案例与源文件解析
- 多边形扩展算法在MATLAB中的应用与实现
- 用React类组件创建迷你待办事项列表指南
- Python库setuptools-58.5.3助力高效开发
- fmfiles工具:在MATLAB中查找丢失文件并列出错误
- 老枪二级域名系统PHP源码简易版发布
- 探索DOSGUI开源库:C/C++图形界面开发新篇章