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.

71 lines
1.6 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<2F>ļ<EFBFBD>: <20>̲߳<DFB3><CCB2><EFBFBD><EFBFBD><EFBFBD>
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
//
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2011-4-18
//
//
/////////////////////////////////////////////////////////////////////////////
#pragma once
///*ʹ<>ø<EFBFBD><C3B8><EFBFBD>:
// <20><><EFBFBD><EFBFBD><E5B4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// static DWORD WINAPI _ThreadFunc(LPVOID lpVoid);
// <20><><EFBFBD><EFBFBD><EFBFBD>̺߳<DFB3><CCBA><EFBFBD><EFBFBD><EFBFBD>
// SetThreadFunc(...);
// <20><><EFBFBD><EFBFBD><EFBFBD>̣߳<DFB3>Run
// <20>ȴ<EFBFBD><C8B4>߳<EFBFBD>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>WaitForDone
// <20>ж<EFBFBD><D0B6>̣߳<DFB3>StopThread
//*/
namespace NThread
{
class AFX_EXT_CLASS CProcessThread
{
public:
CProcessThread(void);
~CProcessThread(void);
//<2F><><EFBFBD>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣߳<DFB3><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2>¼<EFBFBD><C2BC><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9BAAF>StartThread<61><64><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>
bool Run();
void WaitForDone(void); //<2F>ȴ<EFBFBD><C8B4>߳̽<DFB3><CCBD><EFBFBD>
//Ϊ<>˵<EFBFBD>ǰ<EFBFBD>̵߳<DFB3><CCB5>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
bool CreateProcessEvent(void);
void CloseProcessEvent(void);
DWORD WaitForEventFinished(void); //<2F>ȴ<EFBFBD><C8B4>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
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); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD>̣߳<DFB3><CCA3><EFBFBD><EFBFBD><EFBFBD>m_bCanceled=TRUE
protected:
virtual bool StartThread(void); //<2F><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>
virtual void Finished(void); //<2F><><EFBFBD><EFBFBD><EFBFBD>̺߳󣬽<CCBA><F3A3ACBD><EFBFBD>һЩ<D2BB>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CloseThread(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>ɾ<EFBFBD><C9BE><EFBFBD>̣߳<DFB3><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_bCanceled=TRUE
void SafeTerminateThread(HANDLE& hThread);
protected:
HANDLE m_hThread;
bool m_bCanceled;
HANDLE m_hEvent;
bool m_bProcessSucceed;
void* m_pParameter; //<2F><><EFBFBD><EFBFBD><EFBFBD>̺߳<DFB3><CCBA><EFBFBD><EFBFBD>д<EFBFBD><D0B4>IJ<EFBFBD><C4B2><EFBFBD>ָ<EFBFBD><D6B8>
LPTHREAD_START_ROUTINE m_lpThreadFunc; //<2F><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>Ҫֱ<D2AA><D6B1>ִ<EFBFBD>еĺ<D0B5><C4BA><EFBFBD>
};
}//namespace
using namespace NThread;