还是遍历文件的有关问题,速度来解决,送分~

还是遍历文件的问题,速度来解决,送分~~~~~~~~~~
我用的是API的FindFirstFile和FindNextFile来写的文件搜索遍历,自己加了个变量,还是不能中途停止,无法跳出循环,大家来看下代码帮忙解决下,不要在网上搜别的代码了,就用我的代码来看下问题所在。
1.遍历是单线程的
2.重点是解决,在搜索中如何使搜索停止下来。
C/C++ code

bool IsStop=FALSE //加的一个全局变量,来跳出循环,但是还是不行
_snprintf(tmpPath, sizeof(tmpPath), "%s\\*", dirname);
    if ((fh = FindFirstFile(tmpPath, &fd)) != INVALID_HANDLE_VALUE)
        do {
        
            if(IsStop) break; 
            if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
                
                if(strcmp(fd.cFileName,"."))//不是当前目录则继续
                {
                if(strcmp(fd.cFileName,".."))//不是上层目录则继续
                {
                
                    _snprintf(newPath,sizeof(newPath),"%s\\%s", dirname,fd.cFileName);
                
                    numfound = Find(filename, newPath, numfound);
                

                }
            }
            }
        
        } while (FindNextFile(fh, &fd));




------解决方案--------------------
在 do 循环中加入消息释放。

MSG msg;
while(PeekMessage(&msg,(HWND)NULL,0,0,PM_REMOVE) )
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
sleep(1);
------解决方案--------------------
你是不是没有单独开个线程来做这个搜索工作?
搜索在主线程做的话,IsStop肯定是在搜索完成后再变成TRUE的了
因为搜索结束后,系统才会去处理停止按钮的消息