比如循环:while(!(HidD_GetFeature(HANDLE,Buffer,Length)));
如果想让它必须在30ms内结束,应该怎么办哪?
请指教,谢谢大家!!

解决方案 »

  1.   

    用多线程!设置timer,时间到了后关闭线程
      

  2.   

    WaitForSingleObject(h,30)
    返回WAIT_TIMEOUT就关闭
      

  3.   

    必须用多线程吗?
    因为我只是要对!(HidD_GetFeature(HANDLE,Buffer,Length))进行循环,如果要用多线程的话,要改动的很多。
      

  4.   

    是呀,必须用多线程,因为你将这段代码放到主线程的话,这段循环会将程序弄成没有响应状态,使用户无法做别的操作最好的办法是用 SetTimer 设置一个定时器,然后在OnTimer(UINT nID)中添加代码
    if(HidD_GetFeature(HANDLE,Buffer,Length))KillTimer(nID);  //你可以将定时器的触发时间设置小些,就不用while循环了
    DWORD dw = GetTickCount() .............             //30秒的时间处理,然后再用KillTimer关闭定时器