如何在工作线程运行时通知UI线程而不使用Winapi方法C ++

时间:2018-08-27 15:45:29

标签: c++ multithreading c++14

在我的程序中,我正在运行一个线程,该线程从设备获取一些值,然后需要在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替换为通知功能。

0 个答案:

没有答案