gpt4 book ai didi

c++ - 如何使用 CWinThread::OnIdle?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:57:01 24 4
gpt4 key购买 nike

如您所知,可以在 MFC UI 线程中指定 OnIdle。详情可以看这篇引用http://msdn.microsoft.com/en-us/library/1sa2f19f.aspx .但我不确定如何在实践中使用它。

根据上面的引用,

“当线程的消息队列为空时,在默认消息循环中调用 OnIdle。使用您的重写来调用您自己的后台空闲处理程序任务。”

所以我可以理解为当UI线程不忙的时候调用方法。根据上面的文档,

“因为在 OnIdle 返回之前应用程序无法处理消息,所以不要在此函数中执行冗长的任务。”

但是空闲事件中可以完成哪些任务呢?一个例子就足够了。谢谢

更新:一个令人沮丧的事实是 this old (1996) article by Russell Weisz, titled "First Aid for the Thread-Impaired: Using Multiple Threads with MFC."对理解 CWinThread 很有帮助。

更新 2:由于 Microsoft 删除了 MSJ 文章,this one可能会有帮助。

最佳答案

MFC 使用其默认的 OnIdle 处理来启用和禁用菜单项和工具栏按钮,如您在 CWinApp::OnIdle 的文档中所见.当条件发生变化时,不必使用显式代码来启用或禁用这些项目,它只会在没有其他事情发生时自动发生。

Windows 本身使用类似的策略来触发 WM_PAINT 消息 - 只有当消息队列中没有其他消息时才会生成这些消息。

当您要执行低优先级任务时,可以使用此技术。

关于c++ - 如何使用 CWinThread::OnIdle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8349677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com