²é¿´: 155  |  »Ø¸´: 0
µ±Ç°Ö÷ÌâÒѾ­´æµµ¡£

zsglly

ľ³æ (ÖøÃûдÊÖ)

[½»Á÷] ÔËÓöàÏ̼߳¼ÊõʵÏÖÎļþµÄ¿ìËÙËÑË÷

´ÓÒ»Ãû³õѧÕßµ½Èç½ñÒ»ÃûÊìÁ·µÄVC³ÌÐòÔ±£¬µÃÒæÓÚVC֪ʶ¿âµÄ°ïÖú£¬Ò»Ö±ÏëןÃÈçºÎ»Ø±¨¡£ÏÖ׫´ËÎÄ£¬Ò»À´ÂÔ±íÐÄÒ⣬¶þÀ´ºÍVC°®ºÃÕß½»Á÷¡£
²Ù×÷ϵͳһ°ã¶¼ÌṩÁËÎļþËÑË÷µÄ¹¦ÄÜ£¬µ«²ÉÓõÄÊÇ˳ÐòËÑË÷£¬ËÑË÷ЧÂʺܵס£¶øÇÒ°´´Ë·¨±à³ÌÊ®·Ö·³Ëö£¬ÔÚĿ¼²ã´ÎºÜ¶àʱ£¬ÍùÍù²»ºÃ´¦Àí¡£±¾ÎIJÉÓöàÏ̼߳¼ÊõʵÏÖÎļþµÄ¿ìËÙËÑË÷£¬´úÂëÁ¿ºÜÉÙ£¬Ö´ÐÐЧÂʼ«¸ß¡£
Æä»ù±¾Ë¼ÏëÆäʵºÜ¼òµ¥£¬¾ÍÊÇÕÒµ½Ò»¸öĿ¼¾Í¿ª±ÙÒ»¸öỊ̈߳¬ÎļþµÄ»°µ±È»ÔÚÏß³ÌÄھʹ¦ÀíÁË¡£ÕâÑùʵÏÖÁËͬ²½ËÑË÷£¬Ëٶȵ±È»¿ìÆðÀ´ÁË¡£


±¾ÎijÌÐòÔËÐÐЧ¹ûͼ

ÒÔϽéÉÜVC¾ßÌåʵÏÖ£º
Ò»¡¢ ËÑË÷Óõ½Á½¸öwin32µÄÁ½¸öº¯Êý:


HANDLE FindFirstFile(LPCTSTR lpFileName£¬LPWIN32_FIND_DATA lpFindFileData );
BOOL FindNextFile( HANDLE hFindFile, LPWIN32_FIND_DATA lpFindFileData );

¶þ¡¢ ½¨Á¢Ï̺߳¯Êý
Ê×ÏÈÒª¶¨ÒåÏ̵߳IJÎÊý½á¹¹ÓÃÓÚÎļþÐÅÏ¢µÄ´«µÝ£º
typedef struct tagTHREADPARAM {
CString strPath;
CString strFileName;
}THREADPARAM  m_param;

ÒòΪÏß³ÌÒª²Ù×ÝÈ«¾Ö±äÁ¿£¬ËùÒÔ¶¨Ò廥³âÌ壺CMutex m_mutexThreadCount,m_mutexThreadParam,m_mutexPath;
Èç¹ûËÑË÷Íê±Ï»òËÑË÷ÖÕÖ¹£¬ÒªÓÐʼþ֪ͨ£¬ÓÚÊÇ´´½¨Ò»¸öʼþ: CEvent m_event(FALSE,FALSE,NULL,NULL);
UINT uThreadCount=0;//²úÉúµÄÏß³ÌÊý
CStringArray m_strPathArray;//´æ·ÅËÑË÷µ½µÄÎļþ·¾¶Êý×é
//Ï̺߳¯Êý
UINT GetFilePathThreadProc(LPVOID pParam)
{
if(pParam==NULL)
AfxEndThread(NULL);
THREADPARAM * m_pParam=(THREADPARAM *)pParam;
CString strPath=m_pParam->strPath;
CString strFileName=m_pParam->strFileName;
m_mutexThreadCount.Lock();
uThreadCount++;
m_mutexThreadCount.Unlock();
HANDLE hFile;
WIN32_FIND_DATA *pInfo=new WIN32_FIND_DATA;
hFile = ::FindFirstFile(strPath+"\\*.*",pInfo);
if(hFile==INVALID_HANDLE_VALUE)
{
delete pInfo;
m_mutexThreadCount.Lock();
uThreadCount--;
        //ËùÓеÄÏß³ÌÍê³É£¬Ôò¼¤»îʼþ£¬Í¨ÖªÓ¦ÓóÌÐòÍê³ÉËÑË÷£¨ÏÂͬ£©
if(uThreadCount==0)
m_event.SetEvent();
m_mutexThreadCount.Unlock();
return 0;
}
do{
if(pInfo->cFileName[0]==''.'')
continue;
char cFileName[MAX_PATH];
strcpy(cFileName,pInfo->cFileName);
CString strFile=cFileName;
if(pInfo->dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
{
    //Èç¹ûÊÇĿ¼£¬Ôò¿ª±ÙеÄËÑË÷Ïß³Ì
m_mutexThreadParam.Lock();
m_param.strPath=strPath+"\\"+strFile;
m_param.strFileName=strFileName;
AfxBeginThread(GetFilePathThreadProc,&m_param, THREAD_PRIORITY_NORMAL);
m_mutexThreadParam.Unlock();
}
else
{
//Èç¹ûÊÇÎļþÔòÖ±½ÓÓëÒªËÑË÷µÄÎļþ±È½Ï
if(strFile==strFileName){
m_mutexPath.Lock();
m_strPathArray.Add(strPath+"\\"+strFile);
m_mutexPath.Unlock();
m_mutexThreadCount.Lock();
uThreadCount--;
if(uThreadCount==0)
m_event.SetEvent();
m_mutexThreadCount.Unlock();
return 0;
}
}
}
while(::FindNextFile( hFile,pInfo));
::FindClose(hFile);
delete pInfo;
m_mutexThreadCount.Lock();
uThreadCount--;
if(uThreadCount==0)
m_event.SetEvent();
m_mutexThreadCount.Unlock();
return 0;
}

Èý¡¢ µ÷ÓÃÏ̺߳¯ÊýÖ´ÐÐËÑË÷ void GetFilePath()
{
m_event.ResetEvent();//½«Ê¼þÖÃΪÎÞÐźÅ״̬
uThreadCount=0;
m_strPathArray.RemoveAll();
m_param.strPath=m_strPath;
m_param.strFileName=m_strFileName;
m_param.m_pListInfo=&m_ListInfo;
//Æô¶¯Ï̠߳ 
AfxBeginThread(GetFilePathThreadProc,&m_param, THREAD_PRIORITY_NORMAL);  
//µÈ´ýËÑË÷Íê³É»òÖÕֹʼþµÄ·¢Éú
::WaitForSingleObject(m_event.m_hObject,INFINITE);  
if(m_strPathArray.GetUpperBound()==-1){
AfxMessageBox("ûÕÒµ½Îļþ",MB_OK|MB_ICONINFORMATION);return;}
for(int i=0;i {
AfxMessageBox(m_strPathArray.GetAt(i),MB_OK|MB_ICONINFORMATION);
}
}

ËÄ¡¢ Èç¹ûÏëÖÐ;ֹͣËÑË÷£¬Ö»ÐèÏȽ«Ï̶߳ÔÏó´æ·ÅÓÚÒ»Ï̶߳ÔÏóÊý×飬µ±È»Ã¿Ôö¼ÓÒ»¸öÏß³ÌÔòÌí¼ÓÒ»¸öÏ̶߳ÔÏóµ½Êý×飬ÿ·µ»ØÒ»¸öỊ̈߳¬Ôò½«¸ÃÏ̶߳ÔÏó´ÓÊý×éÖÐɾ³ý¡£ÕâÑùÔÚÄãÏëÖÕÖ¹ËÑË÷ʱ£¬¿É²Ù×÷ÕâЩÏ̶߳ÔÏ󼴿ɴﵽĿµÄ¡£¾ßÌåµ÷ÓÃÁ½¸öº¯Êý£º BOOL GetExitCodeThread(HANDLE hThread,LPDWORD lpExitCode);
BOOL TerminateThread(HANDLE hThread, DWORD dwExitCode);
BOOL GetExitCodeThread(
  HANDLE hThread,      // handle to the thread
  LPDWORD lpExitCode   // address to receive termination status
);
BOOL TerminateThread(
  HANDLE hThread,    // handle to thread
  DWORD dwExitCode   // exit code
);
³ÌÐòʵÏֵľßÌåÇé¿öÇë²Î¼ûÔ´´úÂë¡£±¾ÎÄÔÚVC++6.0ºÍWindows2000»·¾³ÖбàÒëͨ¹ý¡£

[ Last edited by »ÃÓ°ÎÞºÛ on 2006-11-29 at 07:47 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

×öÈËÒªºñµÀ°¡£¡ºñµÀ°¡£¡
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ zsglly µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 0703»¯Ñ§µ÷¼Á£¬Çóµ¼Ê¦ÊÕ +7 ÌìÌìºÃÔËÀ´Éϰ¶° 2026-03-24 7/350 2026-03-24 20:26 by peike
[¿¼ÑÐ] 0854È˹¤ÖÇÄÜ·½ÏòÕÐÊÕµ÷¼Á +3 ÕÂСÓã567 2026-03-24 3/150 2026-03-24 19:46 by zhouxuan..
[¿¼ÑÐ] 0805 316Çóµ÷¼Á +4 ´óÑ©Éî²Ø 2026-03-18 4/200 2026-03-24 17:34 by dick_runner
[¿¼ÑÐ] 307Çóµ÷¼Á +5 ³¬¼¶ÒÁ°º´óÍõ 2026-03-24 5/250 2026-03-24 15:46 by ÐÇ¿ÕÐÇÔÂ
[¿¼ÑÐ] 305·ÖÇóµ÷¼Á£¨Ê³Æ·¹¤³Ì£© +5 Sxy112 2026-03-21 7/350 2026-03-24 12:27 by 544594351
[¿¼ÑÐ] 086003ʳƷ¹¤³ÌÇóµ÷¼Á +4 íµíµ111 2026-03-24 4/200 2026-03-24 11:53 by 544594351
[¿¼ÑÐ] Ò»Ö¾Ô¸¼ª´ó»¯Ñ§322Çóµ÷¼Á +4 17501029541 2026-03-23 6/300 2026-03-24 10:21 by ´÷Χ²±µÄСÎÃ×Ó
[¿¼ÑÐ] »·¾³Ñ§Ë¶288Çóµ÷¼Á +8 ƤƤƤ123456 2026-03-22 8/400 2026-03-23 23:47 by ÈÈÇéɳĮ
[¿¼ÑÐ] ²ÄÁÏ/ũҵרҵ£¬07/08¿ªÍ·¾ù¿É£¬¹ýÏß¾ÍÐÐ +3 ºÇßíŶ»í 2026-03-23 4/200 2026-03-23 22:30 by Íô£¡£¿£¡
[¿¼ÑÐ] 315·Ö£¬³ÏÇóµ÷¼Á£¬²ÄÁÏÓ뻯¹¤085600 +3 13756423260 2026-03-22 3/150 2026-03-22 20:11 by edmund7
[¿¼ÑÐ] Çóµ÷¼Á +5 Zhangbod 2026-03-21 7/350 2026-03-22 13:13 by Zhangbod
[»ù½ðÉêÇë] ɽ¶«Ê¡ÃæÉÏÏîÄ¿ÏÞ¶îÆÀÉó +4 ʯÈð0426 2026-03-19 4/200 2026-03-22 08:50 by Wei_ren
[¿¼ÑÐ] 297Çóµ÷¼Á +3 ϲ»¶»¹ÊDz»¸ÊÐÄ 2026-03-20 3/150 2026-03-21 18:33 by ѧԱ8dgXkO
[¿¼ÑÐ] 299Çóµ÷¼Á +5 shxchem 2026-03-20 7/350 2026-03-21 17:09 by ColorlessPI
[¿¼ÑÐ] Çóµ÷¼Á +3 .m.. 2026-03-21 4/200 2026-03-21 16:25 by barlinike
[¿¼ÑÐ] ²ÄÁÏÓ뻯¹¤£¨0856£©304Çó BÇø µ÷¼Á +3 Çñgl 2026-03-21 3/150 2026-03-21 13:47 by lature00
[¿¼ÑÐ] 317Çóµ÷¼Á +5 Éê×ÓÉêÉê 2026-03-19 9/450 2026-03-20 22:26 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸ËÕÖÝ´óѧ²ÄÁÏÇóµ÷¼Á£¬×Ü·Ö315£¨Ó¢Ò»£© +5 sbdksD 2026-03-19 5/250 2026-03-20 22:10 by luoyongfeng
[¿¼ÑÐ] Çóµ÷¼ÁÒ»Ö¾Ô¸ÄϾ©º½¿Õº½Ìì´óѧ289·Ö +3 @taotao 2026-03-19 3/150 2026-03-20 21:34 by JourneyLucky
[¿¼ÑÐ] 086500 325 Çóµ÷¼Á +3 Áì´øÐ¡ÐÜ 2026-03-19 3/150 2026-03-20 18:38 by ¾¡Ë´Ò¢1
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û