首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

应用程序很卡,如何增加线程?没分了,请各位帮忙

2014-01-12 
应用程序很卡,怎么增加线程?没分了,请各位帮忙MFC应用程序,界面上有一个列表控件,负责显示从网络接收的数

应用程序很卡,怎么增加线程?没分了,请各位帮忙
MFC应用程序,界面上有一个列表控件,负责显示从网络接收的数据,当数据量很大时,列表控件不停地刷屏,此时单击菜单打开一个模态对话框,对话框没有弹出,再点击别的,都点不了,好像模态对话框已经弹出,列表控件依然在刷屏。
这是怎么回事呢?是不是单线程只能处理一个任务呢?能否通过增加线程解决这个问题呢?
没分了,请各位指点,谢谢

[解决办法]
AfxBeginThread创建线程,线程中去接收网络数据,接收到后发消息给主线程去更新列表,如果插入的数据项非常非常多,可以考虑那啥虚拟列表,百度去我也没用过这玩意儿
[解决办法]
AfxBeginThread线程去解决,界面本身就是一个线程,如果他再接收数据时候会一直不停接收程序会卡死哪里,你用AfxBeginThread去解决
[解决办法]

引用:
Quote: 引用:

算了,看样子你对线程如何建立使用啥的也不是特别了解
给你出一个歪门邪道的思路吧。
如果数据量的别大,你的VirualList显示列表控件不停地刷屏是没有意义的,因为你只能看到不停的刷屏,实际内容啥也看不到。所以显示没意义,所以就是,不显示了,把收到的内容写日志就完了,好多大的程序都是不显示,有的连个界面都没有,查东西都是去日志里看。


线程我以前用过简单的,如果增加一个线程,那是不是要把网络接收和VirtualList的刷新放在这个线程里?如果这样,会存在一些问题,异步套接字是在主线程中创建的,切换上下文才能在子线程中使用,主线程和子线程都要用到该套接字,来回切换可能会出现问题。



vc我个人感觉是这样,主对话框的作用是显示和接收用户鼠标或键盘输入,然后建议编程人员建立各种线程来实现真正的后台工作。根据你的程序,建议主程序主要是负责显示,然后建立新的线程来负责接收数据,线程接收到数据后,发给主程序显示,这样主程序就会一直得到不同的消息响应(消息如刷新,单击界面按钮等等)。

热点排行