- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如您所知,可以在 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/
所以我正在深入研究 MFC 的世界,特别是自定义使用 CWinThread 来实现辅助线程。我已经通过其他方式成功实现了工作线程,因此将 CWinThread 用于工作线程的主要动机是利用消息映射。
我有一个非常简单的问题,关于 CWinThread 如何工作以及每次调用 ResumeThread() 时入口点在哪里。我正在寻找一个看起来类似于“主”函数的条目,我可以在其中执行一些操作和分支。 我
我有这样的代码 X *m = new X(); // X - class derived from CWinThread; m->CreateThread(CRREATE_THREAD); m->b_
如您所知,可以在 MFC UI 线程中指定 OnIdle。详情可以看这篇引用http://msdn.microsoft.com/en-us/library/1sa2f19f.aspx .但我不确定如何
我有一个 C++ 应用程序 (VS2008),我这样启动线程: CWinThread *myThread= AfxBeginThread(myOp,0); 现在我要做的就是给这个线程命名,这样我就可以
我正在使用 MFC C++,我正在尝试使用来自 Dlg 类的 PostThreadMessage 将消息发送到 CWinThread,但该消息未在线程类上处理 线程的.H文件: #define
当我调试用 C++ 开发的 Windows 应用程序时,我发现这个函数调用 CWinThread::PumpMessage()。我读过 MSDN以及其他一些要了解的论坛帖子。但仍然不确定它的作用。 有
在我的项目中,我有管理类和计算类。从 CWinThread 派生的 calc 类。和 manager 有一个指向 calc 类的指针。我如何使用 AfxBeginThread 以及在哪里使用?请注意,
我有一个通过 AfxBeginThread 生成线程的循环,它将 CWinThread 指针存储在一个数组中。在每次迭代中,我检查线程是否为空并将线程的句柄存储在另一个数组中。 const unsig
我正在尝试在名为 ClientManager 的类中创建工作线程,但我无法从新的 CWinThread 访问 AfxGetMainWnd(),即: UINT ClientManager::Worker
我正在使用 AfxBeginThread 启动一个线程。这将返回一个指向新的 CWinThread 对象的指针。 MSDN 声明此指针为 NULL,如果线程创建失败,它将释放所有内容。但是,一旦线程在
我正在调用 AfxBeginThread 并使用 CWinThread 在我的 MFC 应用程序中启动一个 UI 线程。 我注意到,如果我的主线程在 CWinThread::InitInstance(
我想知道在 MFC 中使用 CWinThread 派生类作为工作线程的过程是什么。 msdn 文档说 CWinthread::InitInstance() 或 CWinthread::Run() 应该
我正在处理一些遗留代码,这些代码使用 MFC 的 UI 线程来实现管理器线程-工作线程机制。代码过去在 MFC GUI 应用程序下运行,但现在它在一个单独的 dll 中,并且可以从 GUI 应用程序和
我是一名优秀的程序员,十分优秀!