⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i_mytaskscheduler.h

📁 SQLBig5BugTool 宽字符操作问题
💻 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 + -