使用ui线程应该把自己的方法放在哪里?

magicing 2009-05-20 10:21:37
线程的目的肯定是要启动一个新的方法开始新的执行,所以工作线程传的是一个函数指针我能理解,可是在ui线程中,继承了一个线程类,然后创建了这个对象以后,调用BeginThread就开始执行新的线程了,你应该把你需要执行的方法放在哪里呢?这样看来似乎只能放在构造方法或者初始化方法里么,真的是这样用的么?
...全文
42 点赞 收藏 7
写回复
7 条回复
biweilun 2009年05月20日
不一定在构造中进行处理,只要把握好时机,在主函数中的申明虚函数中做吧
回复 点赞
qrlvls 2009年05月20日
习惯上是将主线程作为UI线程的,因为一般是在这个线程中创建窗口,处理消息循环,基本上目前所有的UI框架都是这样的
不要被各种所谓的框架蒙蔽了,实际VS作为开发工具而言,各种框架只是屏蔽细节,除了C顺序执行的流程外,C++无外乎是多了构造,析构的时机,还要注意全局变量/对象初始化的时机
回复 点赞
qrlvls 2009年05月20日
系统本身本来是没有工作线程和UI线程的区别的,只是大家习惯上这样说而已

所谓 UI 线程只不过是含有消息循环的工作线程而已
回复 点赞
huofen2005 2009年05月20日
UI线程主体MFC已经帮你写好好,你只要处理消息就行了。
回复 点赞
NineheadedBird 2009年05月20日
如果你继承的是一个线程类,那么父类应该有一个虚函数是需要你来实现的,这个就是你的执行方法。
回复 点赞
w29468 2009年05月20日
线程就是一个函数执行体,跟UI不UI没有关系;UI线程不同于工作线程的只是有自己的消息队列,能处理GUI消息而已。
回复 点赞
keristef 2009年05月20日
方法很多:
假设CUIThread : public CWinThread,在CUIThread中可以加方法作为执行体,利用消息启动之,也可以利用多继承如:
CUIThread : public CWinThread,IWork

IWork为接口,在CUIThread中实现,消息循环Run启动时就执行这个任务。
回复 点赞
发动态
发帖子
进程/线程/DLL
创建于2007-09-28

6376

社区成员

4.9w+

社区内容

VC/MFC 进程/线程/DLL
社区公告
暂无公告