VC 线程

来源:互联网 发布:淘宝保健品规则 编辑:程序博客网 时间:2024/05/17 00:14

一、

//线程数据结构

typedef struct ThreadData

{
XXXXXXDlg* pDlg;//窗口指针
int inttype = 0;
BOOL Booltype = true;
CString str = "";
}THREADDATA;
THREADDATA* pThreadData = new THREADDATA;
UINT ThreadName_Thread(LPVOID lParam);


//工作线程
UINT ThreadName_Thread(LPVOID lParam)
{
THREADDATA* pThreadData = (THREADDATA*)lParam;//转换参数
//pData->pDlg->m_hWnd
//pData->inttype

//pData->Booltype 

//pData->str
while (1)
{
//::SendMessage(pThreadData->pDlg->m_hWnd, WM_TCPSERVERThread, (WPARAM)0, 1);
//pThreadData->pDlg->XXXX();
//printf("Thread:%d %s\r\n", pThreadData->nIndex,pThreadData->nStr);
Sleep(1); //延缓时间1ms
}
delete pThreadData;
return 0;
}


void XXXXDlg::BeginThread()
{
pThreadData->pDlg = this;
this->m_Thread = AfxBeginThread(ThreadName_Thread, pThreadData);//启动工作线程
}


二、

HANDLE m_hDataThread

DWORD WINAPI CXXXX::DataThread(LPVOID lpParameter);

DWORD WINAPI CXXXX::DataThread(LPVOID lpParameter)
{
CXXXX* m_pXXXX=(CXXXX*)lpParameter;
while(1)
{
m_pXXXX->m_cArr[MyNumber] = 123;
m_pXXXX->m_cMark[MyNumber] = TRUE;

int i = m_pXXXX->Function();
::SendMessage(m_pXXXX->hWnd, WM_XXXX, (WPARAM)MsgBuf, LPARAM(1));//向主窗口发送自定义消息
}
return 0;
}


BOOL CXXXX::BeginThread()
{
m_hDataThread= CreateThread(NULL, 0, DataThread, this, 0, NULL);
if (m_hDataThread== NULL)
{
return FALSE;
}
return TRUE;
}

void CXXXX::StopThread()
{

DWORD exitcode;
WaitForSingleObject(m_hDataThread,50);
if(!GetExitCodeThread(m_hDataThread,&exitcode))
{
TerminateThread(m_hDataThread,exitcode);
}
CloseHandle(m_hServerDataThread);
m_hServerDataThread=NULL;
}



0 0