C# 计划任务
计划任务 : 个人理解, 就是后台控制程序要求在一定的时间执行相应的任务.
直接上代码:
之前,因为工作需要. 要求每天在凌晨2:00,执行要做的数据
1.1 声明一个接口 Ijob
方法: 执行
public interface IJob
{
//执行方法
void Execute();
}
1.2 声明一个调度程序配置类
属性: 任务列表 (要实行的任务) , 时间间隔 (多久执行一次);
/// <summary>
/// 调度程序配置
/// </summary>
public class SchedulerConfiguration
{
private int sleepInterval;
private List<IJob> jobs = new List<IJob>();
public SchedulerConfiguration(int newsleepInterval)
{
this.SleepInterval = newsleepInterval;
} /// <summary>
/// 任务列表
/// </summary>
public List<IJob> Jobs
{
get { return jobs; } }
/// <summary>
/// 时间间隔
/// </summary>
public int SleepInterval
{
get { return sleepInterval; }
set { sleepInterval = value; }
}
1.3 声明调度程序类
方法: 开启
属性: 调度程序配置对象
/// <summary>
/// 调度程序
/// </summary>
public class Scheduler
{
private SchedulerConfiguration configuration = null;
public Scheduler(SchedulerConfiguration SchedulerConn)
{
Sconn = SchedulerConn;
} /// <summary>
/// 开始执行的方法
/// </summary>
public void Start()
{
while (true)
{
foreach (IJob job in configuration.Jobs)
{
ThreadStart _threadDelegate = new ThreadStart(job.Execute);
Thread _thread = new Thread(_threadDelegate);
_thread.Start();
Thread.Sleep(configuration.SleepInterval); }
}
} /// <summary>
/// 调度程序配置信息
/// </summary>
public SchedulerConfiguration Sconn
{
get { return configuration; }
set { configuration = value; }
}
1.4 实现 : Ijob接口
class person : IJob
{ void IJob.Execute()
{
ThreadTest();
}
public void ThreadTest(){
//......
}
}
1.5 在程序入口(主线程) 运行
public static System.Threading.Thread schedulerThread = null;
static void Main(string[] args)
{
//调度程序配置(每小时执行一次)
SchedulerConfiguration config = new SchedulerConfiguration( * 60 * 60);
//给配置添加工作
config.Jobs.Add(new person());
//调度程序
Scheduler scheduler = new Scheduler(config);
//执行线程
schedulerThread = new System.Threading.Thread(new ThreadStart(scheduler.Start));
schedulerThread.Start();
}
这样, 一个简单的计划任务,就实现了.
C# 计划任务的更多相关文章
- 【声明】前方不设坑位,不收费!~ 我为NET狂官方学习计划
发个通知,过段时间学习计划相关的东西就出来了,上次写了篇指引文章后有些好奇心颇重的人跟我说:“发现最近群知识库和技能库更新的频率有点大,这是要放大招的节奏啊!” 很多想学习却不知道如何规划的人想要一个 ...
- SQL Server-聚焦查询计划Stream Aggregate VS Hash Match Aggregate(二十)
前言 之前系列中在查询计划中一直出现Stream Aggregate,当时也只是做了基本了解,对于查询计划中出现的操作,我们都需要去详细研究下,只有这样才能对查询计划执行的每一步操作都了如指掌,所以才 ...
- ORACLE从共享池删除指定SQL的执行计划
Oracle 11g在DBMS_SHARED_POOL包中引入了一个名为PURGE的新存储过程,用于从对象库缓存中刷新特定对象,例如游标,包,序列,触发器等.也就是说可以删除.清理特定SQL的执行计划 ...
- 解析大型.NET ERP系统核心组件 查询设计器 报表设计器 窗体设计器 工作流设计器 任务计划设计器
企业管理软件包含一些公共的组件,这些基础的组件在每个新项目立项阶段就必须考虑.核心的稳定不变功能,方便系统开发与维护,也为系统二次开发提供了诸多便利.比如通用权限管理系统,通用附件管理,通用查询等组件 ...
- MSSQLSERVER执行计划详解
序言 本篇主要目的有二: 1.看懂t-sql的执行计划,明白执行计划中的一些常识. 2.能够分析执行计划,找到优化sql性能的思路或方案. 如果你对sql查询优化的理解或常识不是很深入,那么推荐几骗博 ...
- SQL Server-聚焦使用索引和查询执行计划(五)
前言 上一篇我们讲了聚集索引对非聚集索引的影响,对数据库一直在强调的性能优化,所以这一节我们统筹讲讲利用索引来看看查询执行计划是怎样的,简短的内容,深入的理解,Always to review the ...
- SQL Tuning 基础概述03 - 使用sql_trace和10046事件跟踪执行计划
1.使用sql_trace跟踪执行计划 1.1 当前session跟踪: alter session set sql_trace = true; //开始sql_trace alter session ...
- SELECT TOP 1 比不加TOP 1 慢的原因分析以及SELECT TOP 1语句执行计划预估原理
本文出处:http://www.cnblogs.com/wy123/p/6082338.html 现实中遇到过到这么一种情况: 在某些特殊场景下:进行查询的时候,加了TOP 1比不加TOP 1要慢(而 ...
- SQL Server 执行计划利用统计信息对数据行的预估原理二(为什么复合索引列顺序会影响到执行计划对数据行的预估)
本文出处:http://www.cnblogs.com/wy123/p/6008477.html 关于统计信息对数据行数做预估,之前写过对非相关列(单独或者单独的索引列)进行预估时候的算法,参考这里. ...
- ASP.NET Core官方计划路线及需要废除的一些Framework技术
概述 下面是 ASP.NET Core的时间表和路线图. 注意日期和特性都可能更改. 作为.NET Core这么大的一个项目,很难准确预测每一个计划的是否有变动. 即便如此,我们还是计划公开和透明的实 ...
随机推荐
- 粗窥STARTUP.A51和INIT.A51
也许大家曾经注意过使用Keil C51来编译链接生成目标代码之后,在我们的主程序之前有些代码不是我们写的,它们从哪里来的? Keil C51的\C51\LIB目录下有STARTUP.A51和INIT. ...
- c# list exists(contains) delegate 委托判断 元素是否在LIST中存在
static void Main(string[] args) { List<GoodsInfo> list = new List<GoodsIn ...
- MongoDB安装,打开及增,删,改,查
MongoDB是目前最流行的NoSQl之一,NoSQL及No Only Sql,之所以这样叫我的理解是它摒弃了传统关系型数据库的字段类型的概念,而是将所有的数据以key-value方式存储,以key索 ...
- PHP性能优化学习笔记--PHP周边性能优化--来自慕课网Pangee http://www.imooc.com/learn/205
PHP一般运行于Linux服务器中,周边主要包括:Linux运行环境.文件存储.数据库.缓存.网络 常见PHP场景的开销次序: 读写内存<<读写数据库(使用内存作为缓存.异步处理)< ...
- Linux下用命令格式化U盘
1.找到U盘位置(已挂载) sudo fdisk -l 如图,我的在/dev/sdc4 2.格式化U盘 sudo mkfs -t vfat /dev/sdc4 -t 后面是格式化为哪种文件系统格式,v ...
- android自己定义ViewPager之——3D效果应用
今天在github里看到一个3D效果的ViewPager,感觉做出来的ViewPager滑动的时候效果十分的炫,就check out下来研究了一下怎样实现的.以及怎样使用.将整个ViewPager稍加 ...
- Swiper滑动Html5手机浏览器自适应
手机网页能通过window.screen.height, width获取屏幕分辨率,于是能够通过分辨率比率来计算高度. window.onload=function(){ var swiper = d ...
- 某APK中使用了动态注册BroadcastReceiver,Launcher中动态加载此APK出现java.lang.SecurityException异常的解决方法
在某APK中,通过如下方法动态注册了一个BroadcastReceiver,代码参考如下: @Override protected void onAttachedToWindow() { super. ...
- iOS之Swift语言的学习
好久都没有来这个熟悉而又陌生的地方啦, 想想已经有两三个月了吧,不过我相信以后还是会经常来的啦,因为忙碌的学习已经过去啦,剩下的就是要好好的总结好好的复习了,好好的熟悉下我们之前学习的知识点,将他们有 ...
- Java内存区域和GC机制篇
Java内存区域和GC机制一.目录 1.Java垃圾回收概括 2.Java内存区域 3.Java对象的访问方式 4.Java内存访问机制 5.Java GC 机制 6.Java垃圾收集器 二.Java ...