实现多个计时器可以利用C#中的System.Timers.Timer
类来完成。
步骤如下:
-
创建一个
Dictionary<string, Timer>
,用于存储多个计时器,其中键为计时器的名称,值为对应的Timer
实例。 -
对于每个需要计时的任务,创建一个计时器并设置定时时间、事件处理程序等参数。
-
将计时器实例添加到
Dictionary
中,并指定一个独特的名称作为键。 -
启动计时器。
以下是两个示例:
示例一:创建两个计时器,分别用于记录“工作时间”和“休息时间”。
// 创建计时器字典
Dictionary<string, Timer> timers = new Dictionary<string, Timer>();
// 创建工作计时器
Timer workTimer = new Timer();
workTimer.Interval = 25 * 60 * 1000; // 25分钟
workTimer.AutoReset = false; // 不自动重置
workTimer.Elapsed += WorkTimerElapsed;
// 创建休息计时器
Timer restTimer = new Timer();
restTimer.Interval = 5 * 60 * 1000; // 5分钟
restTimer.AutoReset = false; // 不自动重置
restTimer.Elapsed += RestTimerElapsed;
// 将计时器添加到字典
timers.Add("work", workTimer);
timers.Add("rest", restTimer);
// 启动计时器
timers["work"].Start();
void WorkTimerElapsed(object sender, ElapsedEventArgs e)
{
// 工作计时器到时后,先停止工作计时器,再启动休息计时器
timers["work"].Stop();
timers["rest"].Start();
}
void RestTimerElapsed(object sender, ElapsedEventArgs e)
{
// 休息计时器到时后,先停止休息计时器,再启动工作计时器
timers["rest"].Stop();
timers["work"].Start();
}
示例二:创建三个计时器,用于记录“上班时间”、“午饭时间”和“下班时间”。
// 创建计时器字典
Dictionary<string, Timer> timers = new Dictionary<string, Timer>();
// 创建上班计时器
Timer workTimer = new Timer();
workTimer.Interval = 8 * 60 * 60 * 1000; // 8小时
workTimer.AutoReset = false; // 不自动重置
workTimer.Elapsed += WorkTimerElapsed;
// 创建午饭计时器
Timer lunchTimer = new Timer();
lunchTimer.Interval = 1 * 60 * 60 * 1000; // 1小时
lunchTimer.AutoReset = false; // 不自动重置
lunchTimer.Elapsed += LunchTimerElapsed;
// 创建下班计时器
Timer offWorkTimer = new Timer();
offWorkTimer.Interval = 9 * 60 * 60 * 1000; // 9小时
offWorkTimer.AutoReset = false; // 不自动重置
offWorkTimer.Elapsed += OffWorkTimerElapsed;
// 将计时器添加到字典
timers.Add("work", workTimer);
timers.Add("lunch", lunchTimer);
timers.Add("offWork", offWorkTimer);
// 启动计时器
timers["work"].Start();
void WorkTimerElapsed(object sender, ElapsedEventArgs e)
{
// 上班计时器到时后,先停止上班计时器,再启动午餐计时器
timers["work"].Stop();
timers["lunch"].Start();
}
void LunchTimerElapsed(object sender, ElapsedEventArgs e)
{
// 午饭计时器到时后,先停止午饭计时器,再启动下班计时器
timers["lunch"].Stop();
timers["offWork"].Start();
}
void OffWorkTimerElapsed(object sender, ElapsedEventArgs e)
{
// 下班计时器到时后,停止所有计时器
foreach(Timer timer in timers.Values)
{
timer.Stop();
}
}
以上两个示例分别演示了如何通过Dictionary
存储多个计时器,并利用Elapsed
事件来处理计时器到时的情况。该方式适用于同时管理多个计时器的情况,可以根据需要进行扩展和修改。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现多个计时器记录不同定时时间 - Python技术站