#pragma once
|
|
#include "SThreadControl.h"
|
|
class CSWorkThreadData
|
{
|
public:
|
CSWorkThreadData(PVOID pPtr)
|
{
|
pCallerPtr = pPtr;
|
dwDelayTime = 0;
|
dwHoldTime = 1000;
|
nSignalType = -1;
|
nSignalIndex = -1;
|
nSignalValue = 1;
|
}
|
|
virtual ~CSWorkThreadData()
|
{
|
pCallerPtr = NULL;
|
}
|
|
PVOID pCallerPtr;
|
DWORD dwDelayTime;
|
DWORD dwHoldTime;
|
int nSignalType;
|
int nSignalIndex;
|
int nSignalValue;
|
};
|
|
interface ISWorkThread2Parent
|
{
|
virtual void ISWT2P_SendSignalData(int nSignalType, int nSignalIndex, int nValue, DWORD dwDelayTime, DWORD dwHoldTime) = 0;
|
};
|
|
class AFX_EXT_CLASS CSWorkThread : public CSThreadControl
|
{
|
public:
|
CSWorkThread(ISWorkThread2Parent *pSWSTP, int nThreadCount=5);
|
virtual ~CSWorkThread(void);
|
|
BOOL AddThreadData(int nType, int nIndex, int nValue, DWORD dwDelay, DWORD dwHold);
|
|
protected:
|
virtual void WorkThreadProcess(PVOID pParameter);
|
|
protected:
|
void RunWorkThread(PVOID pParameter);
|
BOOL CreateWorkThread(PVOID pParameter);
|
void CloseWorkThread();
|
static VOID CALLBACK WorkCallback(PTP_CALLBACK_INSTANCE pInstance, PVOID pParameter, PTP_WORK pWork);
|
|
protected:
|
PTP_WORK m_pWork;
|
PTP_WORK_CALLBACK m_pWorkCallback;
|
ISWorkThread2Parent* m_pSWT2P;
|
};
|