WEB开发网
开发学院软件开发VC VC下利用多线程实现文件的快速检索 阅读

VC下利用多线程实现文件的快速检索

 2010-07-01 20:42:57 来源:WEB开发网   
核心提示:3.调用线程函数执行搜索void GetFilePath(){m_event.ResetEvent();//将事件置为无信号状态uThreadCount=0;m_strPathArray.RemoveAll();m_param.strPath=m_strPath;m_param.strFileName=m_strFil

3.调用线程函数执行搜索

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<m_strPathArray.GetSize();i++)
 {
  AfxMessageBox(m_strPathArray.GetAt(i),MB_OK|MB_ICONINFORMATION);
 }
}

4.如果想中途停止搜索,只需先将线程对象存放于一线程对象数组,当然每增加一个线程则添加一个线程对象到数组,每返回一个线程,则将该线程对象从数组中删除。这样在你想终止搜索时,可操作这些线程对象即可达到目的。具体调用两个函数:

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环境中编译通过。

上一页  1 2 

Tags:VC 利用 线程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接