欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Kanzi中C++创建线程,子线程调用主线程update方法更新UI方式

程序员文章站 2022-06-10 14:18:07
...

头文件引入 

#include <kanzi/kanzi.hpp>
#include <thread>
#include <stdio.h> 
#include "windows.h"

main函数功能代码增加

using namespace kanzi;

// 主线程创建工作线程操作
printf("main thread id is %d\n", GetCurrentThreadId());
std::thread t1(&Demo::TestThread, this);
t1.detach();

void Demo::TestThread() {
    printf("child thread id is %d\n", GetCurrentThreadId());
    for (int i = 0; i < 3; i++) {
        printf("Test Thread is run: %d\n", i);
        std::this_thread::sleep_for(std::chrono::milliseconds(1000));
        // 完成工作线程切换主线程工作部分
        Domain* domain = getDomain();
        auto updateDataFuc = std::bind(&Demo::updateData, this, name, value);
        domain->getTaskDispatcher()->submit(updateDataFuc);
    }
}

// 更新Kanzi显示数据方法
void Demo::updateData(std::string name, std::string value) {
    printf("update thread id is %d\n", GetCurrentThreadId());
    // 更新KanziUI操作...
}