EventThread.h 790 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #pragma once
  2. #include <vector>
  3. #include <map>
  4. typedef std::map<HANDLE, int> EventMapType;
  5. class CEventThread
  6. {
  7. public:
  8. CEventThread(void);
  9. ~CEventThread(void);
  10. static unsigned int __stdcall EventThreadFnc(void* thisptr);
  11. protected:
  12. virtual void OnEvent(int eventId, void *param) { return; }
  13. virtual void OnTimeOut(void *param) { return; }
  14. void RunThread();
  15. bool UndoFireEvent(int eventId);
  16. UINT m_threadID;
  17. HANDLE m_thread;
  18. HANDLE m_hEvt;
  19. EventMapType m_eventMap;
  20. bool m_exitThread;
  21. bool m_threadRunning;
  22. void *m_param;
  23. int m_waitTimeout;
  24. public:
  25. void Start(void *param = NULL);
  26. void Stop(int waitTime = 5000);
  27. void AddEvent(int eventId);
  28. bool FireEvent(int eventId);
  29. bool IsCancelled() { return m_exitThread; }
  30. bool IsRunning() { return m_threadRunning; }
  31. };