#pragma once // TODO: I really don't like the interface for this class IThread { public: typedef void (* MainProcPtr)(void * param); IThread(); ~IThread(); void Start(MainProcPtr proc, void * procParam = NULL); void Stop(void); void ForceStop(void); bool IsRunning(void) { return isRunning; } bool StopRequested(void) { return stopRequested; } HANDLE GetHandle(void) { return theThread; } protected: MainProcPtr mainProc; void * mainProcParam; volatile bool stopRequested; bool isRunning; HANDLE theThread; UInt32 threadID; private: static UInt32 WINAPI _ThreadProc(void * param); };