#pragma once #include #include typedef std::map EventMapType; class CEventThread { public: CEventThread(void); ~CEventThread(void); static unsigned int __stdcall EventThreadFnc(void* thisptr); protected: virtual void OnEvent(int eventId, void *param) { return; } virtual void OnTimeOut(void *param) { return; } void RunThread(); bool UndoFireEvent(int eventId); UINT m_threadID; HANDLE m_thread; HANDLE m_hEvt; EventMapType m_eventMap; bool m_exitThread; bool m_threadRunning; void *m_param; int m_waitTimeout; public: void Start(void *param = NULL); void Stop(int waitTime = 5000); void AddEvent(int eventId); bool FireEvent(int eventId); bool IsCancelled() { return m_exitThread; } bool IsRunning() { return m_threadRunning; } };