#include "StdAfx.h"
|
#include "Thread_ViewRefresh.h"
|
|
|
CThread_ViewRefresh::CThread_ViewRefresh(DWORD dwPeriod) : CTimerThreadPool(dwPeriod,10)
|
{
|
m_pV2M = NULL;
|
}
|
|
|
CThread_ViewRefresh::~CThread_ViewRefresh(void)
|
{
|
}
|
|
BOOL CThread_ViewRefresh::CreateThread()
|
{
|
BOOL bReturn = TRUE;
|
|
// Thread »ý¼º ÈÄ Thread ¼öÇà
|
bReturn = CreateTimerThread(this);
|
|
return bReturn;
|
}
|
|
void CThread_ViewRefresh::TimerThreadProcess(PVOID pParameter)
|
{
|
CThread_ViewRefresh* pThread = static_cast<CThread_ViewRefresh*>(pParameter);
|
if(pThread == NULL)
|
return;
|
|
std::vector<CScheduleViewMessage> *pVecViewMSG;
|
std::vector<CScheduleViewMessage> vecMSG;
|
std::vector<CScheduleViewMessage>::iterator it;
|
CScheduleViewMessage SendViewMSG;
|
|
if(pThread->m_pV2M == NULL)
|
{
|
return;
|
}
|
|
CSingleLock mylock(&pThread->m_csViewMSG);
|
mylock.Lock();
|
pVecViewMSG = pThread->GetVecScheduleViewMSG();
|
if(pVecViewMSG->empty() == TRUE)
|
{
|
mylock.Unlock();
|
return;
|
}
|
|
vecMSG.resize(pVecViewMSG->size());
|
std::copy(pVecViewMSG->begin(),pVecViewMSG->end(),vecMSG.begin());
|
pVecViewMSG->clear();
|
mylock.Unlock();
|
|
Sleep(0);
|
|
for(it=vecMSG.begin();it!=vecMSG.end();it++)
|
{
|
SendViewMSG = *it;
|
|
pThread->m_pV2M->Send_ViewRefresh(&SendViewMSG);
|
}
|
vecMSG.clear();
|
|
}
|
|
int CThread_ViewRefresh::AddViewMSG(int nJobIndex,int nSide,int nState,int nDispLine)
|
{
|
CSingleLock mylock(&m_csViewMSG);
|
mylock.Lock();
|
|
CScheduleViewMessage ViewMessage;
|
|
ViewMessage.ProcMsg.nJobIndex = nJobIndex;
|
ViewMessage.ProcMsg.nSide = nSide;
|
ViewMessage.ProcMsg.nState = nState;
|
ViewMessage.ProcMsg.nDispLine = nDispLine;
|
|
m_VecScheduleViewMSG.push_back(ViewMessage);
|
int nCount = (int)m_VecScheduleViewMSG.size();
|
|
mylock.Unlock();
|
return nCount;
|
}
|
|
|
BOOL CThread_ViewRefresh::ClearViewMSG()
|
{
|
CSingleLock mylock(&m_csViewMSG);
|
mylock.Lock();
|
|
m_VecScheduleViewMSG.clear();
|
|
mylock.Unlock();
|
return TRUE;
|
}
|