还是遍历文件的有关问题,速度来解决,送分~
还是遍历文件的问题,速度来解决,送分~~~~~~~~~~
我用的是API的FindFirstFile和FindNextFile来写的文件搜索遍历,自己加了个变量,还是不能中途停止,无法跳出循环,大家来看下代码帮忙解决下,不要在网上搜别的代码了,就用我的代码来看下问题所在。
1.遍历是单线程的
2.重点是解决,在搜索中如何使搜索停止下来。
------解决方案--------------------
在 do 循环中加入消息释放。
MSG msg;
while(PeekMessage(&msg,(HWND)NULL,0,0,PM_REMOVE) )
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
sleep(1);
------解决方案--------------------
你是不是没有单独开个线程来做这个搜索工作?
搜索在主线程做的话,IsStop肯定是在搜索完成后再变成TRUE的了
因为搜索结束后,系统才会去处理停止按钮的消息
我用的是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的了
因为搜索结束后,系统才会去处理停止按钮的消息