C#定时执行
代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using Common.Utils; namespace test
{
public partial class Form1 : Form
{
/// <summary>
/// 记录上次执行时间的文件路径
/// </summary>
private string lastRunTimePath = Path.Combine(Application.StartupPath, "lastRunTime.txt");
/// <summary>
/// 上次执行时间,精确到秒
/// </summary>
private string lastRunTime
{
get
{
if (File.Exists(lastRunTimePath))
{
using (StreamReader sr = new StreamReader(lastRunTimePath))
{
string result = sr.ReadToEnd();
sr.Close();
return result;
}
}
return null;
}
set
{
if (!File.Exists(lastRunTimePath))
{
File.Create(lastRunTimePath);
}
using (StreamWriter sw = new StreamWriter(lastRunTimePath, false))
{
sw.Write(value);
sw.Close();
}
}
} public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
timer.Interval = ; //定时执行的时间精确到秒,那么Timer的时间间隔要小于1秒
timer.Tick += new EventHandler((a, b) =>
{
DateTime now = DateTime.Now;
if (now.ToString("yyyy-MM-dd HH:mm:ss") != lastRunTime) //如果相等则说明已经执行过了
{
lastRunTime = now.ToString("yyyy-MM-dd HH:mm:ss");
LogUtil.Log(now.ToString("yyyy-MM-dd HH:mm:ss.fff") + " 时间已到,执行任务"); //TODO:在这里执行任务
}
});
timer.Start();
} }
}
说明:
1、为什么要将lastRunTime存到文件中?
这是为了程序重起的时候,仍能正确判断时间,不会重复执行。
2、和使用Windows定时任务的方式实现有什么区别?
这也是这种实现方式的缺点,精度不够高,如果定时执行定时到分钟,一般精度也只到分钟,可以应用于对于定时时间精确程度不高的定时任务。虽然减小Interval可以提高定时精度,但耗费CPU资源。
3、为什么要这样实现,直接判断时分秒不就行了吗?
程序运行需要时间,哪怕这个时间非常短,会导致跳过某个时间,例如Interval设置为1000,也就是1秒,13时50分29.999秒执行了一次,下一次判断的时候到了13时50分31.001秒,跳过了13时50分30秒,如果秒数用等于判断,就不会执行了。
4、这只是个测试程序,实际使用需要根据实际情况改造一下,比如定时到分钟就可以了,从配置文件中读取配置的定时时间,然后按程序中的方法判断有没有到这个时间。
测试日志截图:

C#定时执行的更多相关文章
- MVC 定时执行任务
环境:.net4.5 需求:需要一个方法定时执行任务 解决: System.Threading.Timer 提供以指定的时间间隔执行方法的机制. 此类不能被继承,有10多种实例化方法,满足多种情况. ...
- 【转】linux 定时执行shell脚本
在oracle 中可以利用dbms_job包定时执行pl/sql.sql过程,在像备份等需要在操作系统级定时任务只能采用crontab来完成 本文讲述crontab具体用法,以供备忘. 在oracle ...
- Linux下定时执行脚本(转自Decode360)
文章来自:http://www.blogjava.net/decode360/archive/2009/09/18/287743.html Decode360's Blog 老师(业精于勤而荒于嬉 ...
- [转]oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务。
oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 select * from dba_jobs; selec ...
- linux定时执行任务crontab命令用法
linux系统的定时任务是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另外, 由于使用者自己也可以设置计划任务,所 ...
- ORACLE 定时执行存储过程
推荐用dbms_scheduler方式更好 (2012-11-19注) /* 查询: select job,broken,what,interval,t.* from user_jobs t; job ...
- oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务。
来源于:http://www.cnblogs.com/wangfg/p/5110831.html 一.查询系统中的job,可以查询视图 --相关视图 select * from dba_jobs; s ...
- linux下定时执行任务方法【转】
之前就转过一篇关于定时任务的文章,前俩天用,还的翻出来看!!!再转一次,备用,,需要的时候不用麻烦找! ----------------------------------------------- ...
- linux定时执行任务
(1)Linux下如何定时执行php脚本?(2)Linux下如何设置定时任务?(3)Crontab定时执行程序 核心提示:键入 crontab -e 编辑crontab服务文件 分为两种情况:(还有一 ...
随机推荐
- 非关系型数据库(NoSql)
最近了解了一点非关系型数据库,刚刚接触,觉得这是一个很好的方向,对于大数据 方面的处理,非关系型数据库能起到至关重要的地位.这里我主要是整理了一些前辈的经验,仅供参考. 关系型数据库的特点 1.关系型 ...
- RabbitMq应用一的补充(RabbitMQ的应用场景)
直接进入正题. 一.异步处理 场景:发送手机验证码,邮件 传统古老处理方式如下图 这个流程,全部在主线程完成,注册->入库->发送邮件->发送短信,由于都在主线程,所以要等待每一步完 ...
- 如何将VCSA添加到微软域控环境,并且实现微软域账号登陆vCenter
v:* { } o:* { } w:* { } .shape { } p.msonormal,li.msonormal,div.msonormal { margin: 0cm; margin-bott ...
- ZKWeb网页框架1.2正式发布
发行日志 https://github.com/zkweb-framework/ZKWeb/blob/master/ReleaseNotes/ReleaseNote.1.2.md 主要改动 更新 ZK ...
- 深入理解css3中nth-child和 nth-of-type的区别
在css3中有两个新的选择器可以选择父元素下对应的子元素,一个是:nth-child 另一个是:nth-of-type. 但是它们到底有什么区别呢? 其实区别很简单::nth-of-type为什么要叫 ...
- 编译器开发系列--Ocelot语言1.抽象语法树
从今天开始研究开发自己的编程语言Ocelot,从<自制编译器>出发,然后再自己不断完善功能并优化. 编译器前端简单,就不深入研究了,直接用现成的一款工具叫JavaCC,它可以生成抽象语法树 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
- 在Centos下搭建git并可以通过windows客户端访问
亲测在本地虚拟机和远程服务器上无问题,如有不懂请留言. 注意事项:以下所有操作是在root权限下操作的.1.Centos服务器版本centos6.5 2.首先安装git,使用yum在线安装 yum i ...
- Linux基础介绍【第四篇】
Linux文件和目录的属性及权限 命令: [root@oldboy ~]# ls -lhi total 40K 24973 -rw-------. 1 root root 1.1K Dec 10 16 ...
- 值得收藏!国外最佳互联网安全博客TOP 30
如果你是网络安全从业人员,其中重要的工作便是了解安全行业的最新资讯以及技术趋势,那么浏览各大安全博客网站或许是信息来源最好的方法之一.最近有国外网站对50多个互联网安全博客做了相关排名,小编整理其中排 ...