如何在不使用 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 完成?