我用了三个线程:一个是主界面,一个是串口数据监视,另外一个不断向串口发送数据并等待下位机返回数据(死循环发送命令字,等待数据返回,再发送命令字)
在2000下,程序前台运行不到读到的串口数据1秒刷新一次,后台运行则2秒多刷新一次,而98下前台运行却6秒刷新一次,这样低的采集速度导致软件基本用不了,但98下后台运行(当前窗体失去焦点)却跟不到一秒刷新一次!
问题出在哪里???
该死的98,我服了you

解决方案 »

  1.   

    试着提升后台线程的优先级SetThreadPriority
      

  2.   

    那个主界面的更新不费时,98下后台运行很正常,2000下运行也正常SetThreadPriority我用了但没有效果。
      

  3.   

    死循环发送命令字,6秒刷新一次?一定是你的程序有bug
      

  4.   

    都说没有bug啦,2000下运行一切正常!
      

  5.   

    在2k下,你可以看一下cpu占有率,如果是100%,那还是好好检查程序吧.这(死循环发送命令字,等待数据返回,再发送命令字)很可能出问题.怎么等的?
      

  6.   

    1、所有变量都初始化过了,否则2000下运行不会正常的,而且98下运行也正常,只是98下前台运行速度慢而已。
    2、在2k下,你cpu占有率不是100%,本程序和其他程序运行都正常。
    “死循环发送命令字,等待数据返回,再发送命令字”是这样的:
    线程发命令祯给下位机,之后等待,如果10秒内有完整的返回祯,则继续发下一个命令,否则提示超时……如此不断循环
      

  7.   

    win2000 和win98在有的地方是不相同的你一定要
        注意到它们的不相之处。
    你可以试者用线程重新在作一次。
      

  8.   

    用的是死循环判断一个全局标志变量?
    不会是那种while(1)吧?
    若真的是, 在循环里加个Sleep(100);就好了。不过最好是改为真正的事件CEVENT之类的同步。
      

  9.   

    循环里加个Sleep(100)是绝对不行的,因为有10多组数据要发送,每次额外Sleep(100)将使速度很慢
    全局标志变量没有同步保护,因为用不着。