要实现的目标:
程序中开一子线程,该子线程的任务为持续从下位机读取数据,读取数据过程为一循环,读到数据就退出循环。现在想在每次读数据前开始定时,如果定时时间到,循环尚未结束则报错“读取数据失败”退出程序。其实正常运行时,一般是定时时间尚未结束读取就已经成功,循环也已退出。这种情况下,定时器就应停止。以备下次循环前重置。
以上目标如何实现啊?欢迎大家热烈讨论,万分感谢!!!

解决方案 »

  1.   

    在线程的开始就运行SetTimer,可以设置一个BOOL量保存循环是否退出,在WM_TIMER消息函数里判断这个BOOL量的值是否用KillTimer,如何没有退出循环,就读取数据失败,TerminateThread(),不过其中应该涉及到了一些线程通信问题.
      

  2.   

    在主线程中使用定时器,呵呵,然后设置一个标志量,当子线程还在运算的时候将其设为TRUE,运算完成以后设置为FALSE,主线程想知道子线程的状态就检查这个标志量就可以了,呵呵
    要不然使用事件也一样。让主线程等待子线程完成时触发的事件,呵呵。
      

  3.   

    DWORD dwStart=GetTickCount();
    while(true)
    {
    //开始从下位机读数据
    if(读到完整数据)
       退出
    else
       Sleep(10);//等待10毫秒
    DWORD dwCur=GetTickCount();
    if(dwCur-dwStart>1000*(你需要的秒数)
       退出
    }
      

  4.   

    SetTimer()事件,设置控制标志。赞同1楼的答案。
    退出时killtimer()