隔一段时间检测一次USB设备的连接状态,希望通过线程在后台运行,不知道该如何实现,
还有一个数据处理需要的时间很长,也想用多线程来做,但也没有头绪,望指教,谢谢!

解决方案 »

  1.   

    起用多线程实现,不会影响主进程的操作。定时发送检测事件,线程接收事件处理,或者在线程中进行SLEEP死循环即可
      

  2.   

    为什么需要监测,设备添加、删除都会有WM_DEVICECHANGE消息发给所有的窗口的。你处理这个消息即可。
      

  3.   

    我这里有个检测USB的代码
    不过还是建议你不用多线程,因为这个检测不耗多少资源BOOL CCopyFileDlg::CheckSavePath()
    {
    //获取磁盘驱动器
    TCHAR szVolumeName[MAX_PATH]={0};
    GetLogicalDriveStrings(MAX_PATH,szVolumeName); TCHAR *pFirst=NULL,*pNext=NULL;
    pFirst=pNext=szVolumeName; //确定保存目录
    while( 1 )
    {
    pNext=pFirst+lstrlen(pFirst)+1;

    if( *pNext==_T('\0') )
    {
    //*pFirst=*pFirst+1;
    break;
    } pFirst=pNext;
    } m_strSavePath=pFirst; return TRUE;
    }//检查是否插入USB存储设备
    BOOL CCopyFileDlg::CheckUSB()
    {
    DWORD dwAttr=GetFileAttributes(m_strSavePath); if( dwAttr==0xFFFFFFFF )
    {
    return FALSE;
    } if( (dwAttr & FILE_ATTRIBUTE_DIRECTORY)==FILE_ATTRIBUTE_DIRECTORY )
    {
    if( GetDriveType(m_strSavePath)!=DRIVE_REMOVABLE )
    {
    //SendMessage(WM_CLOSE,0,0);
    return FALSE;
    } return TRUE;
    }
    else
    {
    return FALSE;
    } return FALSE;
    }
      

  4.   

    做一个定时器,再配合WM_DEVICECHANGE来实现