C++主线程的调用方法
C++ call method from the main Thread
在我的一个类中,我使用以下方法启动了一个线程:
HANDLE hThread;
unsigned threadID;
hThread = (HANDLE)_beginthreadex( NULL, 0, &myThread, NULL, 0, &threadID );
从这个线程中,我想调用一个必须从主线程调用的方法(该方法正在与 UI 交互),但我真的不知道该怎么做,因为主线程不能等到"myThread"通知它。
我见过很多
while(true){
//wait something from myThread
}
但我等不及这样了!
有什么想法吗?
由于您的主线程是 UI,因此您可以向其发送消息。
#define WM_USER_EXECUTE_MY_CODE (WM_USER + 1000)
UI 消息循环应处理消息:
// API code
// LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
// create message map yourself if you're using MFC
if (iMsg == WM_USER_EXECUTE_MY_CODE)
{
// execute your code must run in main thread
}
在工作线程中,向 UI 发送消息
// HWND hwnd = handle to main UI window
// if you need some parameters, send them through WPARAM or LPARAM
SendMessage(hwnd, WM_USER_EXECUTE_MY_CODE, 0, 0);
您应该能够使用 WaitForMultipleObject 等待一个或多个线程。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms687025(v=vs.85).aspx
例:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms687055(v=vs.85).aspx
相关文章:
- 在c++中多次调用方法
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 接收字符串并使用它来调用方法C++
- 使用 gmock c++ 在真实对象上调用方法
- 不带预处理器的调用方法/文件的文件名/行号
- JNI从Android调用C++方法
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- 如何使用接口指针调用方法,该指针是其具体类的一部分,而不是接口的一部分
- 从内部类中的方法从包含类调用方法
- 在销毁期间从另一个线程调用对象上调用方法是否未定义行为?
- 为什么派生类的实例从基类调用方法?
- 实例化对象并调用方法,使用单行语法在 C# 或 C++ 中返回值?
- C++当您取消引用指向类对象的指针,然后将其作为引用返回时,是否可以对此引用调用方法
- 通过模板函数对未知类型调用方法
- 从基于迭代器的for循环转换后,如何在map::find()中调用方法
- 创建一个C++DLL以从C#DLL调用方法
- 如何从qt中的类中调用方法
- 如何在不迭代的情况下对数组中的每个元素调用方法
- C++11 - 获取编译时的所有类变量,并在没有 Boost 的情况下为它们调用方法
- C ++:如何在不创建对象的情况下在主函数中调用方法