首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C- GTK3和线程

C- GTK3和线程
EN

Stack Overflow用户
提问于 2015-04-27 14:41:13
回答 2查看 2.6K关注 0票数 0

我用C编写了一个程序来测试动态GTK标签的更改,但是程序在一些迭代之后立即停止了GUI的更新。

使用GTK直接在调用PThreads ()之前创建一个新线程,我认为这是正确的方法,因为gtk_main手册说gdk_threads_*函数是不推荐的,并且没有建议任何替代方法。

这是新创建的线程的过程和入口点。它简单地将一个常量字符串与不断增加的迭代次数连接起来,并将其设置为标签,但在不可预测的迭代量之后,它将停止更新。

代码语言:javascript
复制
void * change_text(void * args)
{
    char * initialText = (char *) malloc(strlen(gtk_label_get_text((GtkLabel *) args)) * sizeof(char));
    strcpy(initialText, gtk_label_get_text((GtkLabel *) args));

    char setnew[512];

    int x = 1;
    while(1) {
        printf("%s\n", initialText);
        sprintf(setnew, "%s %d", initialText, x++);

        gtk_label_set_text(GTK_LABEL(args), setnew);

        sleep(1);
        bzero(setnew, 512);
    }
}

线不会崩溃。

谁能帮我什么是正确的方法来动态更新标签,按钮,…在GTK3?

EN

Stack Overflow用户

发布于 2017-03-21 18:00:55

您可以在线程中使用g_idle_add ((GSourceFunc) yourfunc,NULL )来运行yourfunc。在此链接中,所有代码:

thread

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29898844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档