GTK循环向标签写内容导致窗口白屏的问题

来源:互联网 发布:MAC上可以玩的游戏 编辑:程序博客网 时间:2024/04/29 16:00

用GTK编写客户端,需要不停的获取数据然后写入标签,一段时间后,窗口变成白屏,控件都没有显示出来,但是按钮仍然可以点击,点击后有效果出现,就是看不见,效果如下:
这里写图片描述
这里写图片描述

这是不停的交替向标签写入“hello”和“world”内容,每一秒写一次。
在虚拟中运行了近20个小时后,窗口变成白屏。

这里写图片描述

具体原因不明,写下来以作提醒。

GTK代码如下

#include <gtk/gtk.h>  #include <pthread.h> void *decrease(void *arg)  {      int flag = 0;    while(1){        if(flag == 0){            gtk_label_set_text((GtkWidget *)arg, "hello");            flag = 1;        }else{            gtk_label_set_text((GtkWidget *)arg, "world");            flag = 0;        }        sleep(1);    }}  int main(int argc, char *argv[])   {      GtkWidget *label;      GtkWidget *window;      GtkWidget *frame;       pthread_t dhclient_id;    gtk_init(&argc, &argv);      window = gtk_window_new(GTK_WINDOW_TOPLEVEL);      gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);      gtk_window_set_default_size(GTK_WINDOW(window), 250, 180);      gtk_window_set_title(GTK_WINDOW(window), "一个小例子");      frame = gtk_fixed_new();      gtk_container_add(GTK_CONTAINER(window), frame);      label = gtk_label_new("0");     gtk_fixed_put(GTK_FIXED(frame), label, 100, 58);      gtk_widget_show_all(window);      g_signal_connect(window, "destroy",G_CALLBACK(gtk_main_quit), NULL);      pthread_create(&dhclient_id,NULL,decrease,label);    pthread_detach(dhclient_id);    gtk_main();        return 0;  }  
0 0