WEB开发网
开发学院软件开发VC 运用多线程技术实现文件的快速搜索 阅读

运用多线程技术实现文件的快速搜索

 2006-07-20 11:42:08 来源:WEB开发网   
核心提示: void GetFilePath(){m_event.ResetEvent();//将事件置为无信号状态uThreadCount=0;m_strPathArray.RemoveAll();m_param.strPath=m_strPath;m_param.strFileName=m_str
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);
  }
}

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

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:运用 线程 技术

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