Welcome

首页 / 软件开发 / C++ / 用多线程实现文件查找的例子

用多线程实现文件查找的例子2010-11-04Kelvin U.V本程序用多线程的思想实现了一个文件查找类CRapidFinder,以加速文件的查找,运行效果图如下:

其中成员函数:

//设置程序主窗口句柄,要匹配的文件名,路径名
void FinderSet(HWND MainHwnd,CString MatchName="*.*",CString MatchDir="");
//设置线程数及优先级
void ThreadSet(LONG MaxThreadCount=5,int priority=0);
//搜索选项
void FinderOption(FINDEROPTION FinderOption);

//查找操作
BOOL StartFinder(); //开始查找
void PauseFinder(); //暂停查找
void ResumeFinder(); //继续查找
void StopFinder(); //停止查找
void FinderReset(); //查找重置

//搜索选项
void FinderOption(FINDEROPTION FinderOption);

每个线程通过自定义的消息与UI线程通信,反映当前的查找进度与查找结果。

//自定义通知消息==========================================================
//WM_THREADEXIT 主线程结束 WPARAM: 结束码
//WM_THREADCOUNT 活动线程数目 WPARAM: 线程数
//WM_FINDERITEM 查找结果 WPARAM: 结果字符串地址 LPARAM:文件属性
//WM_THREADPAUSE 程序暂停
//WM_FINDERFOLDER当前查找目录 WPARAM: 目录字符串地址
//==================================================================

可通过ThreadSet()设置线程的数目与优先级,这样MainThreadProc()中就会产生相应数目的线程