我最近在用MFC编一个界面,程序中调用了多媒体定时器,并使用多个线程分别实现数据保存、绘制曲线以及数据显示等功能。可在程序运行时遇到这样两个问题:
    1、当运行程序后,弹出界面,点住界面标题栏不放则界面停止刷新,多个线程应在后台继续执行,松开鼠标后程序继续执行,可当我检查保存的数据时,却发现在点住标题栏那段时间内的数据没有保存,绘制出的曲线呈现阶梯状;
    2、在快速切换界面或多个程序同时执行时,会出现短暂时间内曲线没有绘制及有几个点遗漏的现象。    分析以上两个现象,给我的感觉好像是各个线程在那段时间内没有执行,检查了半天程序也没有找到问题所在,望高手指点!!!

解决方案 »

  1.   

    不要在ontimer里开启你的其他进程.
    wm_timer的优先级是很低的.(这个优先级不知道用的准确与否,不过意思应该明白)
      

  2.   

    你在保存数据的线程里不要和窗口交互(例如,SendMessage),因为如果主线程阻塞将导致你的线程暂时挂起。在保存数据的线程中只处理数据保存,而把显示、曲线绘制等工作单独放在一个线程、或者定时器中。
      

  3.   

    我的数据保存、曲线绘制以及显示是分别放在3个不同线程中进行的,相互之间没有关联,利用WaitForSingleObject来等待,通过定时器的回调函数来SetEvent,,这会导致我说的问题吗?