免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3742 | 回复: 2
打印 上一主题 下一主题

在线程中设置列表值用gtk_list_store_set提示段错误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-16 10:32 |只看该作者 |倒序浏览
我是在线程里面设置列表控件里面的值的。
线程代码如下:
  1. void thread_proc(void)
  2. {
  3.     GtkListStore *list_store;
  4.     GtkTreeModel *list_model;
  5.     GtkTreeIter iter;
  6.     gchar *str_data;
  7.     gboolean flg_valid;
  8.     gchar str_ppid_file[255] = {0};
  9.     while(flg_thread_run)
  10.     {
  11.         sleep(16);

  12.         gdk_threads_enter();

  13.         // ==== list_info = gtk_tree_view_new(); =======
  14.         list_model = gtk_tree_view_get_model(GTK_TREE_VIEW(list_info));
  15.         list_store = GTK_LIST_STORE(list_model);
  16.         flg_valid = gtk_tree_model_get_iter_first(list_model,&iter);
  17.         while(flg_valid)
  18.         {
  19.             gtk_tree_model_get(list_model,&iter,LIST_COL_STATE,&str_data,-1);

  20.             //如果状态不为空
  21.             if(strcmp(str_data,"") != 0 && gtk_list_store_iter_is_valid(list_store,&iter) == TRUE)
  22.             {
  23.                 goto next_iter;
  24.             }
  25.             
  26.             g_free(str_data);

  27.             if(!gtk_list_store_iter_is_valid(list_store,&iter))break;
  28.             gtk_tree_model_get(list_model,&iter,LIST_COL_PPID,&str_data,-1);
  29.             memset((char*)str_ppid_file,0,255);
  30.             sprintf((char*)str_ppid_file,"%s%s%s",appconfig.log_sourcepath,str_data,appconfig.logname_filter);

  31.             if(!file_exists((const gchar*)str_ppid_file)) goto next_iter;

  32.             gboolean flg_test_state = check_test_log((const gchar*)str_ppid_file,(const gchar*)str_data);
  33.             gchar str_tp_ver[50];
  34.             strcpy((char*)str_tp_ver,(char*)get_tp_ver((const gchar*)str_ppid_file,(gchar*)str_data));
  35.             if(str_tp_ver == NULL) goto next_iter;
  36.         
  37.             gchar *sxml = create_test_xml(flg_test_state,(const gchar*)str_data,(const gchar*)str_tp_ver);
  38.             if(sxml == NULL) goto next_iter;

  39.             if(!backup_log_file((const gchar*)appconfig.log_sourcepath,(const gchar*)appconfig.log_backuppath,str_data)) goto next_iter;

  40.             g_free(str_data);

  41.             str_data = upload_to_mes((const gchar*)sxml);
  42. ///////////////////////////////////////////////////////////////////////////////////////////////////
  43.            //gtk_list_store_set(list_store,&iter,LIST_COL_STATE,str_data);//段错误
  44.             gtk_list_store_set_value(list_store,&iter,LIST_COL_STATE,(GValue*)"OK");//段错误
  45.             gtk_list_store_set_value(list_store,&iter,LIST_COL_STATE,(GValue*)str_data);//段错误
  46.             g_free(sxml);
  47. ////////////////////////////////////////////////////////////////////////////////////////////////////////
  48. next_iter:
  49.             flg_valid = gtk_tree_model_iter_next(list_model,&iter);
  50.             g_free(str_data);
  51.         }

  52.         gdk_threads_leave();
  53.     }
  54.     //gdk_threads_leave();

  55. }
复制代码

论坛徽章:
5
技术图书徽章
日期:2013-11-07 13:21:58技术图书徽章
日期:2013-12-07 10:34:46技术图书徽章
日期:2014-04-23 08:50:31双鱼座
日期:2014-09-16 09:12:34亥猪
日期:2015-01-23 13:37:49
2 [报告]
发表于 2011-11-22 22:59 |只看该作者
gdb

论坛徽章:
0
3 [报告]
发表于 2011-12-10 22:07 |只看该作者
GTK+非线程安全,请用gtk_idle_add(),然后指定其回调函数来运行所需的任务。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP