www.pudn.com > acdx.rar > Thread.cpp


// TextFile.cpp: implementation of the CColumn class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#include "StdAfx.h" 
#include "Thread.h" 
 
 
#pragma warning( disable:4800 ) 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
//##ModelId=424BB6400289 
long Thread::m_delayTime = 500; 
 
///////////////////////////////////////////////////////////////////////////////// 
// Thread 
 
//##ModelId=424BB64002C6 
Thread::Thread () : 
 
	m_pThreadData(0),			// data for this thread 
	m_hThread(0),				// handle to thread 
	m_idThread(0)				// id of thread 
{} 
 
//##ModelId=424BB64002C7 
Thread::~Thread () 
 
{ 
	release(); 
} 
 
// create/destroy 
//##ModelId=424BB64002C8 
bool Thread::create ( void * pThreadData ) 
{ 
	// get ptr to data 
	m_pThreadData = pThreadData; 
 
	// create events 
	if ( !createThreadEvents() ) 
		return false; 
 
	// create thread 
 
	#if defined(UseWin32Thread) 
 
	m_hThread =  
	CreateThread(NULL,0, Thread::threadProc, (LPVOID) this, 0, &m_idThread ); 
 
	#else 
 
	m_hThread = (HANDLE) 
	_beginthreadex( NULL, 0, Thread::threadProc, (LPVOID) this, 0, 
                    (unsigned int *) &m_idThread ); 
 
	#endif 
 
	if ( m_hThread == 0 ) 
		return false; 
 
	// success so start thread 
	//::ResumeThread( m_hThread ); 
 
	return true; 
} 
 
//##ModelId=424BB64002D6 
void Thread::release () 
{ 
	// if valid stop thread 
	if ( m_hThread ) 
	{ 
		// wait for thread end 
		stop(); 
 
		// release events 
		for ( long id=0; idrun(); 
 
	// exit the thread 
	#if defined(UseWin32Thread) 
 
	ExitThread( -1 ); 
 
	#else 
 
	_endthreadex( -1 ); 
 
	#endif 
 
 
	return ret; 
} 
 
//##ModelId=424BB6400325 
long Thread::run () 
{ 
	// base class run does nothing 
	return -1; 
}