📄 i_mytaskscheduler.h
字号:
//I_MyTaskScheduler.h
#ifndef _I_MyTaskScheduler_
#define _I_MyTaskScheduler_
#include "I_ParameterList.h"
//#include "BaseSupport.h"
class IMyTaskScheduler;
class IMyTask;
enum DELAY_MODE{
DELAYRUN_IMMEDIATELY=221,
DELAYRUN_AT_SPECIFIC_TIME,
DELAYRUN_MS_RELATIVE_TO_DIPOSITED_TIME,
DELAYRUN_MS_RELATIVE_TO_FORMER_TASK
};
enum{
TASKID_NONE=0,
TASK_SCHEDULER_PAUSE=123,
TASKID_USER_BASE=1000 //user task id must great than or equal to TASKID_USER_BASE
};
class CParameterStruct
{
public:
virtual void SetToParameterList(IParameterList* pIParameterList)=0;
virtual void GetFromParameterList(IParameterList* pIParameterList)=0;
virtual void Reset()=0;
};
class ITaskSchedulerEventSink
{
public:
virtual void DoTask(IMyTask* pMyTask)=0;
virtual void OnTaskScheduled(IMyTask* pMyTask)=0;
virtual const char* GetTaskName(const DWORD dwTaskID)=0;
};
class IMyTaskScheduler
{
public:
virtual void Release()=0;
virtual IMyTask* CreateNewTask(
const DWORD dwTaskID,
const DWORD dwTaskDelayOrTime=100,
const bool bScheduleImmediately=true,//true:no parameter needed false:nedd more parameter so just schedule later
const DELAY_MODE DelayMode=DELAYRUN_MS_RELATIVE_TO_FORMER_TASK
)=0;
virtual void ScheduleTask(IMyTask* pMyTask)=0;
virtual void TaskSchedulerPause(const ULONG ulMS)=0;
virtual void ProcessTask()=0;
virtual DWORD GetTaskCount()=0;
virtual const char* GetTaskName(const DWORD dwTaskID)=0;
virtual void ClearTasks()=0;
virtual IMyTask* ScheduleTaskEx(
const DWORD dwTaskID,
const DWORD dwTaskDelayOrTime,
CParameterStruct* pParameterStruct,
const DELAY_MODE DelayMode=DELAYRUN_MS_RELATIVE_TO_FORMER_TASK
)=0;
};
class IMyTask
{
public:
virtual BOOL IsUserTask()const =0;
virtual bool IsScheduleImmediately()const=0;
virtual DWORD GetTaskID()const=0;
virtual void SetTaskID(const DWORD dwTaskID)=0;
virtual DWORD GetTaskDepositeTick()const=0;
virtual SYSTEMTIME GetTaskDepositeTime()const=0;
virtual DELAY_MODE GetDelayMode()const=0;
virtual void SetDelayMode(const DELAY_MODE DelayMode)=0;
virtual const char* GetDelayModeName()const=0;
virtual DWORD GetTaskDelayOrTime()const=0;
virtual void SetTaskDelayOrTime(const DWORD dwTaskDelayOrTime)=0;
virtual IParameterList* GetIParameterList()=0;
};
IMyTaskScheduler* CreateTaskScheduler(
ITaskSchedulerEventSink* ITaskSchedulerEventSink,
const char* pszSchedulerID
);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -