*************VC中我有一个全局线程函数,用于网络监听,有新用户连接时,将新用户信息显示在TreeView上,如何在线程函数中访问TreeView *************VC中我有一个全局线程函数,用于网络监听,有新用户连接时,将新用户信息显示在TreeView上,如何在线程函数中访问TreeView 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 线程发现新用户连接时,把用户信息SendMessage给TreeView! PostThreadMessage给主线程,主线程处理treeview. 不能把TreeView的指针通过线程的参数传递进去吗? 不要在线程里面处理TreeView的刷新显示问题windows里面的类指针不是线程安全的,handle才是。但是在工作者线程里面处理显示刷新等操作不是不行,但和界面线程容易发生内在冲突,因为界面线程也在刷新界面。不管是从资源线程安全的角度还是编程面向对象,条理清晰的角度来说,都是在线程里面向界面处理窗口发送消息比较好,程序代码处理起来简单,清晰(刷新和显示只在一处进行),而且也安全。 你在启动线程的时候,将你的TreeView所在的窗口的指针或者Handle作为参数传进去。然后再你要访问TreeView的时候,对该窗口发消息。然后再消息处理函数里,根据消息内容,更新你的界面。 传window的指针进线程,不一定安全. 除了线程发消息给主线程外,还有这样的方法: 如果你的界面的刷新频率非常大 ,那么有可能占用cpu资源.可以在主界面上放个定时器,比如设定1秒刷新一次 ,你就可以在顶事器里去获取你的工作者线程想要显示到界面上的信息(两个线程之间要加适当的同步). c++ dll 导出时虚函数和构造函数不能共存问题 帮忙看一下为何调用不成功 MFC 下对话框依次显示问题 如何让用CRect画的一个区域实现震动效果? 对话框非client区得不到重画怎么办? $$$$$COleDateTime tmpTime(COleDateTime::GetCurrentTime());为什么一运行就出错? 问一个很菜的问题,关于Excel 关于EXE\DLL文件捆绑问题????HELP! 使用socket类如何实现udp通讯的程序 listctrl 设置某行中某几个字的颜色 VC6编译时出现的一个问题:LINK: extra operand 请教有关宏的高级用法
windows里面的类指针不是线程安全的,handle才是。
但是在工作者线程里面处理显示刷新等操作不是不行,但和界面线程容易发生内在冲突,因为界面线程也在刷新界面。
不管是从资源线程安全的角度还是编程面向对象,条理清晰的角度来说,都是在线程里面向界面处理窗口发送消息比较好,程序代码处理起来简单,清晰(刷新和显示只在一处进行),而且也安全。
除了线程发消息给主线程外,还有这样的方法:
如果你的界面的刷新频率非常大 ,那么有可能占用cpu资源.可以在主界面上放个定时器,比如设定1秒刷新一次 ,你就可以在顶事器里去获取你的工作者线程想要显示到界面上的信息(两个线程之间要加适当的同步).