我如何创建一个计时器,反复运行我的程序?c++

How do I create a timer run my program repeatedly? C++

本文关键字:运行 程序 c++ 我的 一个 何创建 创建 计时器      更新时间:2023-10-16

我想在我的程序中创建定时器,以便我可以使它每分钟重新运行一次,我不知道如何在c++应用程序中做到这一点。在c#中,我可以创建一个计时器,但我现在在这里挣扎…

睡眠

();不是一个选择,因为据我所知,它使你的程序不活跃X秒,我需要我的应用程序是活跃和工作,计算所有的时间。这是因为我的代码用于不断地将信息输入到MS Access表中。我能够创建代码的必要组件来连接并执行对表的插入/更新,但这只是我正在创建的代码的许多组件之一。请帮助我解决这个小问题(或大问题?),我是一个非常新的c++和学习ATM,但我正在开发一个快速的学习曲线。由于

我想你在Windows上工作,因为你提到了c#。看一下SetTimer,如果它是一个MFC应用,那么看一下CWnd::SetTimer。

每个平台都提供用于创建计时器的api,它通常在计时器到期后会给您一个回调。你可以在你的平台上搜索可用的api。

如果您使用的是windows,请使用setTimer函数

如果你正在使用c++ . net,你可以使用与c#相同的Timer类(es),只是使用c++语法(使用gcnew而不是new,使用^表示GC引用)。

否则你可以只写一个循环:

while (should_keep_looping) {
  // do what you need to do
  // if necessary:
  sleep(1);
}

见:http://www.cplusplus.com/forum/beginner/317/

在c++中有一个内置的"定时器",你对sleep()的行为是正确的。上面的线程描述了一个自定义实现。

  • 如果你有一个窗口,你可以使用它的消息队列,正如Als和Marius在他们的回答中建议的
  • 你可以使用一些任务调度程序和一些定时器来注册一个回调,例如Boost提供的功能。Asio及其deadline_timer(示例)
  • 你可以在BlackJack的链接
  • 中手动检查任务之间的计时器是否过期或者你可以创建单独的线程,让它在时间到来时调用你的回调。优点:你可以在那里使用sleep(),你的回调将与主线程并行调用。缺点:担心同步