//采集线程
UINT ThreadCollect(LPVOID lpParam)
{
ThreadInfo* threadInfo=(ThreadInfo*)lpParam;

CMultiThreadDemoDlg* dlg=threadInfo->dlg; while(true)
{
Sleep(6000);
dlg->m_log.Log("Collect Testing!");
}
}
//发送线程
UINT ThreadSend(LPVOID lpParam)
{
ThreadInfo* threadInfo=(ThreadInfo*)lpParam; CMultiThreadDemoDlg* dlg=threadInfo->dlg; while(true)
{
Sleep(7000);
dlg->m_log.Log("Send Testing!");
}
}
//心跳线程
UINT ThreadHeartBeat(LPVOID lpParam)
{
ThreadInfo* threadInfo=(ThreadInfo*)lpParam; CMultiThreadDemoDlg* dlg=threadInfo->dlg;


while(true)
{
Sleep(8000);
dlg->m_log.Log("HeartBeat Testing!");
}
}定义如下:
struct ThreadInfo
{
CMultiThreadDemoDlg* dlg;
};UINT ThreadCollect(LPVOID lpParam); 
UINT ThreadSend(LPVOID lpParam); 
UINT ThreadHeartBeat(LPVOID lpParam); 调用在Dialog的OnInitDialog中调用,调用语句如下:
CMultiThreadDemoDlg dlg;
ThreadInfo threadInfo;
threadInfo.dlg=&dlg;

CWinThread* pThreadCollect; 
CWinThread* pThreadSend; 
CWinThread* pThreadHeartBeat; pThreadCollect=AfxBeginThread(ThreadCollect,&threadInfo);
pThreadSend=AfxBeginThread(ThreadSend,&threadInfo);
pThreadHeartBeat=AfxBeginThread(ThreadHeartBeat,&threadInfo);m_log是Dialog中的一个类变量,m_log.Log("")是m_log中的一个方法
注:m_log已经经过多次测试没问题程序运行后产生如下错误:“0x7c93b21a”指令引用的"0x00000010"内存。该内存不能为"written"
要终止程序,请单击“确定”
要调试程序,请单击“取消”【确定】 【取消