LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1203|回复: 10

gtk+刷新问题?

[复制链接]
发表于 2004-7-29 21:20:57 | 显示全部楼层 |阅读模式
在一个窗体中,我设置了一个label来显示相关壮态,用
..set_text()来改变它,但过很久才能改为相应的内容。需要移动mouse或改变focus才能刷新。
请高手指点。
发表于 2004-7-30 07:59:07 | 显示全部楼层
while (gtk_events_pending ())
          gtk_main_iteration ();
 楼主| 发表于 2004-7-30 08:39:21 | 显示全部楼层
谢谢您的回复,我是把它放在一个线程的最后,执行一个系统服务后
用set_text()改变壮态,这条语句以前试过,执行到这条语言就好象死
机一样,我是把这条语句加在set_text()后,是这样的吗?或者还有什么别的方法?
发表于 2004-7-30 08:57:05 | 显示全部楼层
你是不是在不同的线程中都对gui进行了操作
这样会造成不可预期的结果

如果是这样,建议你把所有gui操作放在同一线程中(称为gui线程)
其它线程需要改变gui时,通过线程间通信向gui线程发出信息
 楼主| 发表于 2004-7-30 11:47:19 | 显示全部楼层
对,我是在不同的线程和进程中对gui进行的操作,进程间通信用那
种比较好呢,我不了解。
发表于 2004-7-30 12:30:35 | 显示全部楼层
那要看你需要的进程间通信复杂到什么程度
我比较偏爱 socketpair, 一个双向管道
使用方便,而且对付一般的通信辍辍有余
但程序结构要比你原来的复杂一些,很可能要涉及多路IO问题

如果你只是在不同的线程中通信(及数据是共享的),
则只需要在共享数据中放入你要传递的命令
然后发个信号通知另一个线程来取
这样可能稍微简单一点

仅供参考,方法还有很多,要看你怎样顺手
 楼主| 发表于 2004-7-30 13:27:09 | 显示全部楼层
非常感谢您。
发表于 2004-7-30 15:05:09 | 显示全部楼层
最初由 doubleelec 发表
while (gtk_events_pending ())
          gtk_main_iteration ();

一个进程用与不用没什么区别把?
发表于 2004-7-30 15:37:16 | 显示全部楼层
while (gtk_events_pending ())
gtk_main_iteration ();
一般用在循环当中,避免长时间的循环耽误了gui刷新
与是否多进程无关
发表于 2004-7-30 16:41:48 | 显示全部楼层
最初由 doubleelec 发表
while (gtk_events_pending ())
gtk_main_iteration ();
一般用在循环当中,避免长时间的循环耽误了gui刷新
与是否多进程无关

谢谢你, 难怪我写的那程序反应有点慢.:thank
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表