0

我在 Windows7 下使用 Qt5。
我知道如何使用 QThread 创建任务,但我的问题是:
如何每天凌晨 03:00 运行它?
我在考虑 QTimer,但它似乎并不好......它无法以某种方式链接到 03:00am。

只是说清楚:我不能使用某些 Windows 应用程序。它必须在我的 Qt 应用程序中进行编码,因为它也执行一些清理工作:清理历史记录列表,将其修剪到 1000 行(或其他)等。所以,你看我不能使用 TaskScheduler 或类似的 Windows 工具来做到这一点。 ..

4

3 回答 3

1

您可以使用 Windows 任务计划程序为您执行此操作

在此处输入图像描述

于 2015-06-26T11:57:39.087 回答
1

使用 a 有什么问题QTimer?我同意任务调度程序是更好的选择。在这里,只有大约一半0,03%的时间代码被执行,它确实应该做一些事情。如果确切的时间不那么重要,您可以增加计时器间隔和检查边界并减少不必要的调用。但是,如果您更喜欢这样的解决方案,这应该可以:

someclass::someclass(){

    member_timer = new QTimer(this);
    QObject::connect(member_timer, SIGNAL(timeout()), this, SLOT(check_time()));
    member_timer->start(30000);

    member_cleanup_performed = false;
}

void someclass::check_time(){

    QTimer ctime = QTime::currentTime();
    if(ctime.hour() == 3 && ctime.minute() == 0){

        if(member_cleanup_performed == false){
            this->cleanup();
            member_cleanup_performed = true;
        }
    }else{
        member_cleanup_performed = false;
    }
}
于 2015-06-26T13:45:36.043 回答
0

如果您可以使用 C++11,请查看std::this_thread::sleep_until。在单独的线程中运行它,并让线程发出连接到主线程中插槽的信号,然后主线程执行操作。这当然要求您的应用程序实际上在凌晨 3 点运行。

于 2015-06-26T12:31:54.613 回答