科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件VC下利用多线程实现文件的快速检索

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文采用多线程技术实现文件的快速搜索,代码量很少,执行效率极高。

作者:冯杰 来源:天极网 2007年10月19日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
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环境中编译通过。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章