在我的程序中,我正在运行一个线程,该线程从设备获取一些值,然后需要在UI上显示这些值。为了实现这一点,我使用std :: thread来拥有一个跨平台程序。现在的问题是线程正在运行(可能需要3分钟才能完成),并且我想通知UI线程(以更新UI元素)以显示已经可用的值。我知道可以使用PostMessage(...)
来实现,但是需要使用winapi。那么有没有办法在不使用winapi的情况下实现这一目标呢?这是代表我想要做什么的代码的简化。
#include <thread>
MyClass {
public:
// Some initializations
std::thread t;
void LoadingParams();
}
void MyClass::Init() {
// Some initializations...
t = std::thread(&MyClass::LoadingParams, this);
// ...
}
void MyClass::LoadingParams() {
for(int i=0; i < NB_VALUES; i++) {
int value = ReadValue();
// TODO: Send notification to main thread to display the value
// Alternative to PostMessage
}
}
因此,想法是将TODO替换为通知功能。