sl@0: //------------------------------------------------------------------------------ sl@0: #include "Thread.h" sl@0: //------------------------------------------------------------------------------ sl@0: Thread::Thread() : m_hThread(NULL), m_dwThreadId(0) sl@0: { sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: Thread::~Thread() sl@0: { sl@0: if (m_hThread != NULL) sl@0: { sl@0: TerminateThread(m_hThread, -1); sl@0: m_hThread = NULL; sl@0: } sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: void Thread::Start() sl@0: { sl@0: if (m_hThread != NULL) sl@0: return; sl@0: m_hThread = CreateThread( sl@0: NULL, sl@0: 0, sl@0: Thread::ThreadProc, sl@0: this, sl@0: 0, sl@0: &m_dwThreadId); sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: void Thread::Join() const sl@0: { sl@0: WaitForSingleObject(m_hThread, INFINITE); sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: DWORD WINAPI Thread::ThreadProc(LPVOID lpParam) sl@0: { sl@0: Thread* pThread = (Thread*)lpParam; sl@0: pThread->Run(); sl@0: return 0; sl@0: } sl@0: //------------------------------------------------------------------------------