如何创建计时器并重复运行程序?C++; 我想在我的程序中创建定时器,这样我就可以使它每分钟重新运行,而我不知道如何在C++应用程序中完成它。在C#中,我可以创建一个计时器,但我现在在这里挣扎

如何创建计时器并重复运行程序?C++; 我想在我的程序中创建定时器,这样我就可以使它每分钟重新运行,而我不知道如何在C++应用程序中完成它。在C#中,我可以创建一个计时器,但我现在在这里挣扎,c++,timer,C++,Timer,睡眠();不是一个选项,因为据我所知,它会使你的程序在X秒内处于非活动状态,我需要我的应用程序处于活动状态并工作,并一直计算。这是因为我的代码用于不断地将信息输入MS Access表。我能够创建代码的必要组件来连接并执行表的插入/更新,但这只是我正在创建的代码的许多组件中的一个。请帮我解决这个小问题,我对C++和学习ATM很陌生,但我正在开发一个快速学习曲线。谢谢每个平台都提供了创建计时器的api,通常在计时器过期后会给您一个回调。您只需搜索平台上可用的api即可 如果使用Windows使用 <

睡眠();不是一个选项,因为据我所知,它会使你的程序在X秒内处于非活动状态,我需要我的应用程序处于活动状态并工作,并一直计算。这是因为我的代码用于不断地将信息输入MS Access表。我能够创建代码的必要组件来连接并执行表的插入/更新,但这只是我正在创建的代码的许多组件中的一个。请帮我解决这个小问题,我对C++和学习ATM很陌生,但我正在开发一个快速学习曲线。谢谢

每个平台都提供了创建计时器的api,通常在计时器过期后会给您一个回调。您只需搜索平台上可用的api即可


如果使用Windows使用<强> < /> >函数>

,如果使用C++ .NET,可以使用与C++相同的定时器类(ES),只使用C++语法(使用GCNEW而不是NEXE,使用^用于GC引用)。 否则,您可以创建一个循环:

while (should_keep_looping) {
  // do what you need to do

  // if necessary:
  sleep(1);
}

我想你是在Windows上工作的,因为你提到了C。请看一看,如果它是MFC应用程序,请看。

请参见此处:

<>在C++中有内置的“定时器”,并且你对睡眠()的行为是正确的。上面的线程描述了一个自定义实现

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

看看这个。我认为winapi中有内置的定时器,我知道,但如果我只赌它是Windows,我会毫不犹豫地投入资金;此外,如果您阅读下面的内容,您可以看到对MS Access的引用。这意味着Windows:)我不想太挑剔,但因为这是Windows C API,正确的情况是SetTimer,而不是SetTimer