#pragma once class cThread { public: typedef void (ThreadFunc)(void*); cThread( ThreadFunc a_ThreadFunction, void* a_Param, const char* a_ThreadName = 0); ~cThread(); void Start( bool a_bWaitOnDelete = true); void WaitForThread(); private: ThreadFunc* m_ThreadFunction; #ifdef _WIN32 static unsigned long MyThread(void* a_Param); #else static void *MyThread( void *lpParam); #endif void* m_Param; cEvent* m_Event; cEvent* m_StopEvent; AString m_ThreadName; };