头文件
class ConvertDataThread
{
public:
static void RefreshThread();
static void ThreadClose();
static void SetThreadHandle(HANDLE handle){m_handle = handle;}
static void ThreadPause();
static void ThreadContinue();
static void SetThreadIsRunning(){m_bRunning = true;}
static bool IsRunning(){return m_bRunning;}
private:
static HANDLE m_handle;
static bool m_bRunning;
private:
ConvertDataThread(){}
~ConvertDataThread(){}
};
cpp文件
HANDLE ConvertDataThread::m_handle = NULL;
bool ConvertDataThread::m_bRunning = false;
void ConvertDataThread::ThreadPause()
{
SuspendThread(m_handle);
}
void ConvertDataThread::ThreadContinue()
{
ResumeThread(m_handle);
}
void ConvertDataThread::ThreadClose()
{
if(m_handle)
{
TerminateThread(m_handle, 1);
m_handle = NULL;
m_bRunning = false;
}
}
DWORD WINAPI ConvertCBPOITimerSourceData(LPVOID pData)
{
ConvertDataThread::SetThreadIsRunning();
ConvertCBPOITimer::DoAll();
::Sleep(1000);//如果时间太短,下面的消息会丢失,所以sleep一会
::SendMessage(::AfxGetMainWnd()->GetSafeHwnd(), WM_CLOSE, 0, 0);//退出程序
return 0;
}
void ConvertDataThread::RefreshThread()
{
ThreadClose();
m_handle = ::CreateThread(NULL, 0, ConvertCBPOITimerSourceData, NULL, 0, NULL);
m_bRunning = true;
}