首页 / C# / C#控制台线程计时器代码示例
C#控制台线程计时器代码示例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#控制台线程计时器代码示例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2782字,纯文字阅读大概需要4分钟。
内容图文
![C#控制台线程计时器代码示例](/upload/InfoBanner/zyjiaocheng/1059/939d466ff23c4b54bf2517cbbfa30732.jpg)
1、基于 Windows 的标准计时器(System.Windows.Forms.Timer)
2、基于服务器的计时器(System.Timers.Timer)
3、线程计时器(System.Threading.Timer)
一、基于 Windows 的标准计时器(System.Windows.Forms.Timer)
首先注意一点就是:Windows 计时器是为单线程环境设计的
此计时器从Visual Basic 1.0 版起就存在于该产品中,并且基本上未做改动
这个计时器是使用最简单的一种,只要把工具箱中的Timer控件拖到窗体上,然后设置一下事件和间隔时间等属性就可以了
二、基于服务器的计时器(System.Timers.Timer)
System.Timers.Timer不依赖窗体,是从线程池唤醒线程,是传统的计时器为了在服务器环境上运行而优化后的更新版本,在VS2008的工具箱中没有提供现成的控件,需要手工编码使用此计时器
三、线程计时器(System.Threading.Timer)
线程计时器也不依赖窗体,是一种简单的、轻量级计时器,它使用回调方法而不是使用事件,并由线程池线程提供支持。对消息不在线程上发送的方案中,线程计时器是非常有用的。
这里只针对控制台线程计时器的使用给出代码示例,后续会给出其它几种的代码示例:
using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Text; using System.Threading; /************************************************************************/ /* CSharp控制台线程计时器代码示例 * Powered by:testcs_dn * Blog:http://blog.csdn.net/testcs_dn */ /************************************************************************/ namespace CSharp控制台线程计时器代码示例 { /// <summary> /// 控制台线程计时器代码示例 /// 这里展示了Windows API SetConsoleCtrlHandler函数的应用,同时展示了线程计时器的使用; /// Author:testcs_dn /// Date:2015-01-03 /// </summary> class Program { /// <summary> /// 计时器回调函数,在这里处理计时时间是否到达的判断以及要做的事情; /// </summary> /// <param name="obj"></param> public static void workOvertimeTimerCallback(object obj) { DateTime dt = DateTime.Now; if (dt.Hour == 16 && dt.Minute > 0) { Console.WriteLine("ok"); } } //计时器变量 public static System.Threading.Timer workOvertimeTimer = null; //定义处理程序委托 delegate bool ConsoleCtrlDelegate(int dwCtrlType); const int CTRL_CLOSE_EVENT = 2; //导入SetCtrlHandlerHandler API [DllImport("kernel32.dll")] private static extern bool SetConsoleCtrlHandler(ConsoleCtrlDelegate HandlerRoutine, bool Add); static void Main(string[] args) { ConsoleCtrlDelegate newDelegate = new ConsoleCtrlDelegate(HandlerRoutine); if (SetConsoleCtrlHandler(newDelegate, true)) { //初始化计时器 workOvertimeTimer = new System.Threading.Timer(new TimerCallback(workOvertimeTimerCallback), null, 1000, 10000); //这里执行你自己的任务,我举例输出“...”,为了展示长时间的任务,我用了一个死循环; //避免输出太多,使用了Sleep; //注意:Sleep的时间不可太长,否则可能影响Console.ReadKey(),导致不能接收用户输入; while (true) { Console.WriteLine("..."); Thread.Sleep(100); } } else { Console.WriteLine("抱歉,API注入失败,按任意键退出!"); Console.ReadKey(); } } /// <summary> /// 处理程序例程,在这里编写对指定事件的处理程序代码 /// </summary> /// <param name="CtrlType"></param> /// <returns></returns> static bool HandlerRoutine(int CtrlType) { switch (CtrlType) { case CTRL_CLOSE_EVENT: //用户要关闭Console了 Console.WriteLine(); Console.WriteLine("任务还没有完成,确认要退出吗?(Y/N)"); ConsoleKeyInfo ki = Console.ReadKey(); return ki.Key == ConsoleKey.Y; default: return true; } } } }
原文:http://blog.csdn.net/testcs_dn/article/details/42364519
内容总结
以上是互联网集市为您收集整理的C#控制台线程计时器代码示例全部内容,希望文章能够帮你解决C#控制台线程计时器代码示例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。