定时任务-C#线程类 windows服务
原理
最常用的就是C#中 timer类写一个定时方法,然后在把他宿主到windows服务里面。
C#中Timer分类
关于C# Timer类 在C#里关于定时器类就有3个
C# Timer使用的方法1.定义在System.Windows.Forms里
C# Timer使用的方法2.定义在System.Threading.Timer类里 "
C# Timer使用的方法3.定义在System.Timers.Timer类里
◆System.Windows.Forms.Timer
应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内部使用API SetTimer实现的。它的主要缺点是计时不精确,而且必须有消息循环,Console Application(控制台应用程序)无法使用。
◆System.Timers.Timer
和System.Threading.Timer非常类似,它们是通过.NET Thread Pool实现的,轻量,计时精确,对应用程序、消息没有特别的要求。
◆System.Timers.Timer还可以应用于WinForm,完全取代上面的Timer控件。它们的缺点是不支持直接的拖放,需要手工编码。
System.Threading.Timer
public class BizCommon
{
/// <summary>
/// 锁
/// </summary>
public static object LockObject = new object(); public static void StartTime()
{
//第二个参数是回调方法的参数
Timer t = new Timer(StartBiz, null, , );
//t.Change(0, 5000);
} private static void StartBiz(object o)
{
if (Monitor.TryEnter(LockObject))
{
FileStream fs = new FileStream("C:\\log.txt", FileMode.OpenOrCreate);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("Time:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff"));
sw.Close();
}
}
}
System.Timers.Timer
public class BizCommon
{
/// <summary>
/// 锁
/// </summary>
public static object LockObject = new object(); public static void StartTime()
{
System.Timers.Timer tm = new System.Timers.Timer();
tm.Interval = ;
tm.Elapsed += new System.Timers.ElapsedEventHandler(StartBiz);
tm.AutoReset = true; //执行一次false,一直循环执行true
tm.Enabled = true;//是否执行Elapsed事件。
tm.Start();
//tm.Stop();
}
private static void StartBiz(object sender, System.Timers.ElapsedEventArgs e)
{
if (Monitor.TryEnter(LockObject))
{
FileStream fs = new FileStream("C:\\log.txt", FileMode.OpenOrCreate);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("Time:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff"));
sw.Close();
}
}
}
更多关于多线程的教程请看
http://www.cnblogs.com/wudequn/category/1154929.html
public static void StartTime()
{
System.Timers.Timer tm = new System.Timers.Timer();
tm.Interval = ;
tm.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);
tm.Start(); }
private static void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
int intHour = e.SignalTime.Hour;
int intMinute = e.SignalTime.Minute;
int intSecond = e.SignalTime.Second;
// 设置 每天 00:00:00开始执行程序
//
//由于计算机性能问题,有时候可能会跳过某一秒,导致没有执行。 这种导致任务没有处理的异常叫做missfire
//这种就要做很多处理,其他时间段在查看数据库是否今天这个时间处理过。没有处理在重新处理等等 补偿操作。
if (intHour == && intMinute == && intSecond == )
{
//do something
}
}
特定时间点处理任务
Windows服务




创建过程

编译完之后,里面有安装 和 写在 windows服务的批处理文件。
定时任务-C#线程类 windows服务的更多相关文章
- 子线程导致 Windows 服务停止的情况(Topshelf 结合 Quartz.NET)
Ø 前言 本文主要记录子线程导致 Topshelf 和 Quartz.NET 的 Windows 服务停止的现象,以及使用几种常用子线程的注意事项.因为我们有时可能需要开启多个线程执行复杂的逻辑,如 ...
- 编写寄宿于windows服务的WCF服务
由于业务中有些任务需要在后台静默长期运行,或者有些服务队响应的要求比较苛刻,这样的WCF服务就不适合寄宿于IIS中.IIS每隔一段时间w3wp进程会闲置超时,造成服务的运行停止,因此这种耗时或者定时任 ...
- C#使用ServiceController控制windows服务
C#在,使用ServiceController控制类windows服务,添加首次使用前引文:System.ServiceProcess,空间中引用:using System.ServiceProces ...
- Windows服务中用Timer和线程两种方式来执行定时任务
在Service服务文件夹下新建Windows服务 - TestService
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
常量,字段,构造方法 常量 1.什么是常量 常量是值从不变化的符号,在编译之前值就必须确定.编译后,常量值会保存到程序集元数据中.所以,常量必须是编译器识别的基元类型的常量,如:Boolean ...
- 可视化Windows服务定时任务
思路:1.新建一个<Windows服务项目>,在里面建服务文件(可以多个),用来做要执行的任务. 2.新建一个<Windows窗体应用程序>,在这个程序里管理服务.如:安装.卸 ...
- 转:一个跨WINDOWS LINUX平台的线程类
来源:http://blog.csdn.net/dengxu11/article/details/7232681 继Windows下实现一个CThread封装类之后,这里我再实现一个跨WINDOWS ...
- windows服务定时任务
其实定时任务时不时会碰到,只不过解决方案也不是只有一个,网上也有很多文章,但是没有一篇说得很清楚,尤其是安装环节,今天就着重说一下安装, 其他步骤带过,C#开发windows服务,开发,安装,调试 1 ...
- C#通过SC命令和静态公共类来操作Windows服务
调用的Windows服务应用程序网址:http://www.cnblogs.com/pingming/p/5115304.html 一.引用 二.公共静态类:可以单独放到类库里 using Syste ...
随机推荐
- Pytest权威教程09-捕获标准输出及标准错误输出
目录 捕获标准输出及标准错误输出 默认 stdout/stderr/stdin 捕获行为 设置捕获方法或禁用捕获 调试中使用print语句 在测试用例中使用的捕获的输出 返回: Pytest权威教程 ...
- [DOM] Input elements should have autocomplete attributes (suggested: autocomplete='tel', confirm at
译文概要:输入元素应该有自动完成的属性,比如: autocomplete=’tel’. autocomplete 用途: 此功能主要是记住输入内容,下次提交表单或者浏览器回退后,还能保持表单内容不变. ...
- Java中对象并不是都在堆上分配内存的
转(https://blog.51cto.com/13906751/2153924) 前段时间,给星球的球友们专门码了一篇文章<深入分析Java的编译原理>,其中深入的介绍了Java中的j ...
- lnmp新增https访问【转】
环境是使用lnmp一键安装包搭建的: 1 首先去这个网站下载证书:免费ssl证书 最终会得到两个文件 2:在/usr/local/nginx/conf创建cert目录把这两个文件放进去,这个地址后面有 ...
- 其他系列 | charles抓取https中出现unknow【转载】
原文:https://www.cnblogs.com/aeolian/p/9249185.html http正常抓包,https则出现unknown 1.安装证书 Help->SSL Proxy ...
- nice -n 10 bash 和 chrt 10 bash 和 echo -17 > /proc/PID/oom_score_adj
进程优先级起作用的方式从发明以来基本没有什么变化,无论是只有一个cpu的时代,还是多核cpu时代,都是通过控制进程占用cpu时间的长短来实现的. 就是说在同一个调度周期中,优先级高的进程占用的时间长些 ...
- Andorid SQLite数据库开发基础教程(2)
Andorid SQLite数据库开发基础教程(2) 数据库生成方式 数据库的生成有两种方式,一种是使用数据库管理工具生成的数据库,我们将此类数据库称为预设数据库,另一种是使用代码生成的数据库.
- 深入浅出深度学习:原理剖析与python实践_黄安埠(著) pdf
深入浅出深度学习:原理剖析与python实践 目录: 第1 部分 概要 1 1 绪论 2 1.1 人工智能.机器学习与深度学习的关系 3 1.1.1 人工智能——机器推理 4 1.1.2 机器学习—— ...
- 果卿居士-《四种清净明诲》之不淫欲 -------------------------------------------------------------------------------- (转自学佛网:http://www.xuefo.net/nr/article19/186541.html)
“如不断淫”, “阿难,如不断淫,修禅定者,如蒸砂石.欲其成饭.经百千劫.只名热砂.何以故.此非饭本.砂石成故.” 阿难啊,如果这个修行的人,最后不能断除淫欲,包括夫妻之间的淫欲,如果你不能断除这个欲 ...
- java使用ffmpeg生成HLS切片文件
/*** * 将文件切割成片 * @param filename * @param uuid * @param data * @throws IOException */ default void d ...