设置定时器

本文介绍了一个基于Java的定时任务管理类实现。通过使用Java的Calendar和Timer类来设定每日特定时间执行的任务,并确保该任务每天只执行一次。此外,还提供了一个方法用于调整日期以适应不同的执行需求。

package com.test.test;

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;

public class TimerManager {
// 时间间隔
private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;

public TimerManager() {
Calendar calendar = Calendar.getInstance();
/*** 定制每日2:00执行方法 ***/
calendar.set(Calendar.HOUR_OF_DAY, 2);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);

Date date = calendar.getTime(); // 第一次执行定时任务的时间

// 如果第一次执行定时任务的时间 小于 当前的时间
// 此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
if (date.before(new Date())) {
date = this.addDay(date, 1);
}

Timer timer = new Timer();

NFDFlightDataTimerTask task = new NFDFlightDataTimerTask();
// 安排指定的任务在指定的时间开始进行重复的固定延迟执行。
timer.schedule(task, date, PERIOD_DAY);
}

// 增加或减少天数
public Date addDay(Date date, int num) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, num);
return startDT.getTime();
}

}

转载于:https://www.cnblogs.com/personal-blog/p/8401904.html

在MFC(Microsoft Foundation Classes)中,我们可以使用CWnd类的SetTimer函数来设置定时器。SetTimer函数的原型如下: UINT_PTR SetTimer(UINT_PTR nIDEvent, UINT nElapse, TIMERPROC lpTimerFunc = NULL) 其中,参数nIDEvent为一个无符号整型值,用于标识定时器,一般为一个唯一的ID号。参数nElapse表示定时器周期,以毫秒为单位,即多少毫秒后触发定时器事件。参数lpTimerFunc为一个回调函数,用于指定定时器事件的处理函数。 下面以一个简单的例子来说明如何设置定时器: 首先,在需要设置定时器的窗口类中,添加一个成员变量,用于存储定时器ID: UINT_PTR m_nTimerID; 在窗口类的初始化函数(如OnInitDialog)中,通过SetTimer函数设置定时器,如下所示: m_nTimerID = SetTimer(1, 1000, NULL); 上面的代码中,将定时器ID设为1,定时器周期为1000毫秒(即1秒),回调函数指定为NULL,表示定时器事件由窗口类自身处理。 在窗口类中,可以重写OnTimer函数来处理定时器事件。在OnTimer函数中,我们可以根据定时器ID来执行相应的操作,如下所示: void CMyWindow::OnTimer(UINT_PTR nIDEvent) { if (nIDEvent == m_nTimerID) { // 定时器事件的处理代码 // ... } else { CWnd::OnTimer(nIDEvent); } } 在上面的代码中,当定时器事件的ID与设置定时器ID相匹配时,执行相应的代码。若定时器事件ID与设置定时器ID不匹配时,调用CWnd类的默认处理函数。 需要注意的是,当不再需要定时器时,应在窗口类的析构函数(OnDestroy函数)中调用KillTimer函数来销毁定时器: KillTimer(m_nTimerID); 以上就是在MFC中设置定时器的简要步骤。通过SetTimer函数设置定时器,通过OnTimer函数处理定时器事件,在OnDestroy函数中销毁定时器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值