Timer定时器的设计方法
/**////
/// 委托
///
private TimerCallback timerDelegate;
/**////
/// 静态实例
///
private static readonly PaperManager self = new PaperManager();
/**////
/// 构造函数
///
public PaperManager()
{
timerDelegate = new TimerCallback(CheckStatus);
}
/**////
///
///
///
public static PaperManager getInstance()
{
return self;
}
/**////
/// 设置启动时间间隔
///
///天
///小时
///分钟
///秒
///毫秒
public void setDueTime(int days, int hours, int minutes, int seconds, int milisecond)
{
dueTime = new TimeSpan(days, hours, minutes, seconds, milisecond);
}
/**////
/// 设置回调时间间隔
///
///天
///小时
///分钟
///秒
///毫秒
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;
评论