#pragma once

#include "DllDefines.h"

class MCCTRDLLCLASS CRunTask
{
public:
    DWORD GetThreadPriority();
    bool SetThreadPriority(int nPriority);
    bool IsTerminate(void);
    CRunTask();
    virtual ~CRunTask();

    // Operations
    virtual bool InitInstance();
    virtual UINT RunThread() = 0;

    // Run Thread Control
    bool Begin();
    bool Resume();
    bool Suspend();
    bool DeleteThread();
    void SetThreadName(const char* threadName);
    static void SetThreadName(DWORD dwThreadID, const char* threadName);

private:

    CWinThread* m_pThread{ nullptr };
    bool m_bSuspend{ false };
    bool m_bTerminate{ false };

};
