如何在不使用 sleep() 的情况下使用 ontimer 函数延迟进程?

Posted

技术标签:

【中文标题】如何在不使用 sleep() 的情况下使用 ontimer 函数延迟进程?【英文标题】:How to delay the process using ontimer function without using sleep()? 【发布时间】:2016-01-27 06:47:45 【问题描述】:

我必须在我的应用程序窗口中显示 3 个图像,显示每个图像时应该有 10 秒的延迟(即每个图像应该停留 10 秒)。 我如何在不使用 sleep() 的情况下使用 ontimer() 来做到这一点。

【问题讨论】:

SetTimer() 呢? 【参考方案1】:

使用 ON_WM_TIMER()

SetTimer( TIMER_ID, 10000, NULL);

在这里 TIMER_ID 您可以传递任何唯一的 id。 10000 毫秒 = 10 秒

void CYOURDlg::OnTimer(UINT_PTR nIDEvent)

    if(nIDEvent == TIMER_ID) // check timer Id
    

        // Write your code to show exe

    
    CDialog::OnTimer(nIDEvent);

这将每 10 秒调用一次,因为我们给了 10 秒的延迟。

当您不想运行计时器时,可以拨打KillTimer(TIMER_ID)

【讨论】:

CYOURDlg::OnTimer 末尾的链回调用应该是 OnTimer 的基类版本(可能是 CDialog::OnTimer),而不是递归到自身(你的堆栈不够大)

以上是关于如何在不使用 sleep() 的情况下使用 ontimer 函数延迟进程?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 time.Sleep 的情况下等待所有 goroutines 完成?

如何在不崩溃应用程序的情况下暂停/睡眠()功能?

如何在不阻塞 Python 应用程序的情况下运行代码块?

如何在不更改表架构的情况下将查询结果存储在当前表上?

如何在不使用require_once的情况下自动加载和调用独立的PHP类?

在不休眠的情况下使用 VBScript 压缩文件