/// 秒
/// 毫秒
public void setPeriod(int days, int hours, int minutes, int seconds, int milisecond)
{
period = new TimeSpan(days, hours, minutes, seconds, milisecond);
}
/**////
/// 开始
///
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);
}
/**////
/// 停止
///
public void Stop()
{
iTimer.Dispose();
}
/**////
/// 执行一次
///
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);
}
/**////
/// 行为
///
///
public void CheckStatus(object nObject)
{
AutoResetEvent autoEvent = (AutoResetEvent)nObject;
www.55dianzi.com
if (ExcuteUpdate())
{
autoEvent.Set();
}
}
/**////
/// 更新
///
///
private bool ExcuteUpdate()
{
try
{
//应该从数据库获得Paper对象的集合,这里简略
//List
List
foreach (Paper item in paperList)
{
if (item.EndTime <= DateTime.Now)
{
if (item.Status == Paper.StatuSOFNormal)
{
item.Status = Paper.StatusOfTerminate;
}
}
}
/**/////执行数据更新,这里省略
return true;
}
catch
{
return false;
}
}
}
这是问卷的实体类,只是简单的列出必要的属性。
Paper实体类
/**////
/// 实体类
///
publIC class Paper
{
/**////
/// 终止时间
///
public DateTime EndTime;
/**////
/// 状态
///
public int Status;
/**////
/// 正常
///
public const int StatusOfNormal = 1;
/**////
/// 终止
///
public const int StatusOfTerminate = 2;
/**////
///
///
///
///
public Paper(int status, DateTime endTime)
{
Status = status;
EndTime = endTime;
}
}
本文关键字:定时器 综合-其它,单片机-工控设备 - 综合-其它