基本信息
源码名称:System.Threading.Timer 常用操作实例
源码大小:3.44KB
文件格式:.rar
开发语言:C#
更新时间:2013-06-27
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
System.Threading.Timer基本操作示例下载
System.Threading.Timer基本操作示例下载
using System; using System.Collections.Generic; using System.Threading; /// <summary> /// 管理类 /// </summary> public class PaperManager { /// <summary> /// 定时器 /// </summary> private Timer iTimer; /// <summary> /// 启动时间 /// </summary> private TimeSpan dueTime; /// <summary> /// 方法调用间隔 /// </summary> private TimeSpan period; /// <summary> /// 委托 /// </summary> private TimerCallback timerDelegate; /// <summary> /// 静态实例 /// </summary> private static readonly PaperManager self = new PaperManager(); /// <summary> /// 构造函数 /// </summary> public PaperManager() { timerDelegate = new TimerCallback(CheckStatus); } /// <summary> /// /// </summary> /// <returns></returns> public static PaperManager getInstance() { return self; } /// <summary> /// 设置启动时间间隔 /// </summary> /// <param name="days">天</param> /// <param name="hours">小时</param> /// <param name="minutes">分钟</param> /// <param name="seconds">秒</param> /// <param name="milisecond">毫秒</param> public void setDueTime(int days, int hours, int minutes, int seconds, int milisecond) { dueTime = new TimeSpan(days, hours, minutes, seconds, milisecond); } /// <summary> /// 设置回调时间间隔 /// </summary> /// <param name="days">天</param> /// <param name="hours">小时</param> /// <param name="minutes">分钟</param> /// <param name="seconds">秒</param> /// <param name="milisecond">毫秒</param> public void setPeriod(int days, int hours, int minutes, int seconds, int milisecond) { period = new TimeSpan(days, hours, minutes, seconds, milisecond); } /// <summary> /// 开始 /// </summary> public void Start() { AutoResetEvent autoEvent = new AutoResetEvent(false); dueTime = TimeSpan.FromSeconds(0); period = TimeSpan.FromSeconds(10); iTimer = new Timer(timerDelegate, autoEvent, dueTime, period); autoEvent.WaitOne(5000, false); iTimer.Change(dueTime, period); } /// <summary> /// 停止 /// </summary> public void Stop() { iTimer.Dispose(); } /// <summary> /// 执行一次 /// </summary> public void ExcuteOneTime() { if (iTimer != null) { iTimer.Dispose(); } //如果 period 为零 (0) 或 -1 毫秒,而且 dueTime 为正,则只会调用一次 callback; //计时器的定期行为将被禁用,但通过使用 Change 方法可以重新启用该行为。 setDueTime(0, 0, 0, 0, 1); setPeriod(0, 0, 0, 0, -1); AutoResetEvent autoEvent = new AutoResetEvent(false); iTimer = new Timer(timerDelegate, autoEvent, dueTime, period); autoEvent.WaitOne(5000, false); iTimer.Change(dueTime, period); } /// <summary> /// 行为 /// </summary> /// <param name="nObject"></param> public void CheckStatus(object nObject) { AutoResetEvent autoEvent = (AutoResetEvent)nObject; if (ExcuteUpdate()) { autoEvent.Set(); } } /// <summary> /// 更新 /// </summary> /// <returns></returns> private bool ExcuteUpdate() { try { //应该从数据库获得Paper对象的集合,这里简略 //List<Paper> paperList = getPaperList(); List<Paper> paperList = new List<Paper>(); foreach (Paper item in paperList) { if (item.EndTime <= DateTime.Now) { if (item.Status == Paper.StatusOfNormal) { item.Status = Paper.StatusOfTerminate; } } } ////执行数据更新,这里省略 return true; } catch { return false; } } }