You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
//////////////////////////////////////////////////////////////////////////////
//文件: 线程操作类
//主要功能:
//
//程序编写: 2011-4-18
//
//
/////////////////////////////////////////////////////////////////////////////
# pragma once
///*使用该类:
// 定义处理函数:
// static DWORD WINAPI _ThreadFunc(LPVOID lpVoid);
// 设置线程函数:
// SetThreadFunc(...);
// 启动线程: Run
// 等待线程执行结束: WaitForDone
// 中断线程: StopThread
//*/
namespace NThread
{
class AFX_EXT_CLASS CProcessThread
{
public :
CProcessThread ( void ) ;
~ CProcessThread ( void ) ;
//调用此函数运行线程, 先生成内部事件, 然后调用虚函数StartThread启动线程
bool Run ( ) ;
void WaitForDone ( void ) ; //等待线程结束
//为了当前线程的事件处理
bool CreateProcessEvent ( void ) ;
void CloseProcessEvent ( void ) ;
DWORD WaitForEventFinished ( void ) ; //等待事件结束
bool IsCanceled ( void ) { return m_bCanceled ; }
bool IsSucceed ( ) { return m_bProcessSucceed ; }
void EnableSucceed ( bool bEnable ) { m_bProcessSucceed = bEnable ; }
virtual void SetThreadFunc ( LPTHREAD_START_ROUTINE lpThreadFunc , void * pParameter ) ;
virtual bool StopThread ( void ) ; //非正常终止线程, 设置m_bCanceled=TRUE
protected :
virtual bool StartThread ( void ) ; //启动线程
virtual void Finished ( void ) ; //完成线程后,进行一些用户定义的清除工作
void CloseThread ( void ) ; //马上终止并删除线程, 不设置m_bCanceled=TRUE
void SafeTerminateThread ( HANDLE & hThread ) ;
protected :
HANDLE m_hThread ;
bool m_bCanceled ;
HANDLE m_hEvent ;
bool m_bProcessSucceed ;
void * m_pParameter ; //启动线程函数中带的参数指针
LPTHREAD_START_ROUTINE m_lpThreadFunc ; //启动线程需要直接执行的函数
} ;
} //namespace
using namespace NThread ;