首页 / C# / 定时任务-C#线程类 windows服务
定时任务-C#线程类 windows服务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了定时任务-C#线程类 windows服务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2630字,纯文字阅读大概需要4分钟。
内容图文
原理
最常用的就是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 = newobject(); publicstaticvoid StartTime() { //第二个参数是回调方法的参数 Timer t = new Timer(StartBiz, null, 0, 5000); //t.Change(0, 5000); } privatestaticvoid 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 = newobject(); publicstaticvoid StartTime() { System.Timers.Timer tm = new System.Timers.Timer(); tm.Interval = 5000; tm.Elapsed += new System.Timers.ElapsedEventHandler(StartBiz); tm.AutoReset = true; //执行一次false,一直循环执行true tm.Enabled = true;//是否执行Elapsed事件。 tm.Start(); //tm.Stop(); } privatestaticvoid 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 = 1000; tm.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed); tm.Start(); } privatestaticvoid 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 == 00 && intMinute == 00 && intSecond == 00) { //do something } }
Windows服务
编译完之后,里面有安装 和 写在 windows服务的批处理文件。
原文:https://www.cnblogs.com/wudequn/p/8353320.html
内容总结
以上是互联网集市为您收集整理的定时任务-C#线程类 windows服务全部内容,希望文章能够帮你解决定时任务-C#线程类 windows服务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。