窗口与线程?请各位高手帮忙!
在BCB中建了一个工程(不是MDI),
然后 又 创建了2个窗口A和B(用Form控件),窗口上各放一个Timer控件(分别对串口巡检)
《1》如果不主动创建,程序是不是就只有一个主线程在运行?
也就是说 窗口A和B都在同一个线程里运行?
《2》这样做和用一个Timer控件巡检2个串口,巡检周期会不会 有所 缩短?
[解决办法]
学习
[解决办法]
1、只要你没有自行创建其它线程,那么一个应用程序默认就只有一个主线程,创建多个窗体也一样。虽然多个窗体从外观上好像能同时显示、刷新,那都是因为主线程进行消息分发(到具体窗体)的结果。
2、Timer的工作原理是每隔设定的时间(毫秒)向应用程序的消息队列发一个WM_TIMER消息,然后主线程分发该消息时触发Timer的OnTimer事件。因为要经过消息队列排队处理,所以及时性是不能保证的。如果有两个Timer,反正每个Timer都会发出自己的WM_TIMER消息然后排队,处理过程是先处理完第一个WM_TIMER消息后,再处理第二个WM_TIMER消息,由此可见,放两个Timer与一个Timer同时检测两个串口从最终效果上都差不多。