#include "stdafx.h" #include #include #include using namespace WBANetwork; Thread::Thread() : m_threadID( 0 ), m_handleThread( INVALID_HANDLE_VALUE ) { } Thread::~Thread() { if(m_handleThread!=INVALID_HANDLE_VALUE) { ::CloseHandle(m_handleThread); } } HANDLE Thread::Start() { m_handleThread = (HANDLE)_beginthreadex(0, 0, Runner, (LPVOID)this, 0, &m_threadID); return m_handleThread; } bool Thread::Terminate( DWORD exitCode ) { if( m_handleThread == INVALID_HANDLE_VALUE ) return true; bool ret = ( ::TerminateThread( m_handleThread, exitCode ) == TRUE ); m_handleThread = INVALID_HANDLE_VALUE; return ret; } bool Thread::WaitForTerminate( DWORD timeout ) { if( m_handleThread == INVALID_HANDLE_VALUE ) { return false; } return ( ::WaitForSingleObject( m_handleThread, timeout ) == WAIT_OBJECT_0 ); } unsigned int __stdcall Thread::Runner( LPVOID parameter ) { Thread* instance = ( Thread* )parameter; instance->Run(); _endthreadex(0); return 0; }