用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;
}