AfxBeginThread(AFX_THREADPROC(ThreadSendMail),(LPVOID)this);//启动线程//线程函数
UINT ThreadSendMail(LPVOID param){
CMulPackView *pCMulPackView=(CMulPackView*)param;
if(!pCMulPackView->m_mailStruct->isStream)
pCMulPackView->sendEmail(pCMulPackView->m_mailStruct->title,NULL,pCMulPackView->m_mailStruct->content,pCMulPackView->m_mailStruct->FileName);
else
pCMulPackView->sendEmail(pCMulPackView->m_mailStruct->title,pCMulPackView->m_mailStruct->FileName,pCMulPackView->m_mailStruct->content,pCMulPackView->m_mailStruct->FileName);
return 0;
}void CMulPackView::sendEmail(char* strSubject,char* strAppOctStrmContent,char* strHtmlContent,char* fileName)
{
KSmtp smtp;
deque<string> strMails;
char* strSendto="[email protected]";
strMails.push_back(strSendto); //出错 //连接服务器
if(!smtp.Connect(strSmtpAddr,25)){ //出错
AfxMessageBox("连接服务器失败!"); return ;
}
}在线程调用函数中调用CMulPackView类中的sendEmail,其中在deque<string> strMails中进行push_back和调用smtp的Connect方法出错,是什么问题呢?怎样解决?
UINT ThreadSendMail(LPVOID param){
CMulPackView *pCMulPackView=(CMulPackView*)param;
if(!pCMulPackView->m_mailStruct->isStream)
pCMulPackView->sendEmail(pCMulPackView->m_mailStruct->title,NULL,pCMulPackView->m_mailStruct->content,pCMulPackView->m_mailStruct->FileName);
else
pCMulPackView->sendEmail(pCMulPackView->m_mailStruct->title,pCMulPackView->m_mailStruct->FileName,pCMulPackView->m_mailStruct->content,pCMulPackView->m_mailStruct->FileName);
return 0;
}void CMulPackView::sendEmail(char* strSubject,char* strAppOctStrmContent,char* strHtmlContent,char* fileName)
{
KSmtp smtp;
deque<string> strMails;
char* strSendto="[email protected]";
strMails.push_back(strSendto); //出错 //连接服务器
if(!smtp.Connect(strSmtpAddr,25)){ //出错
AfxMessageBox("连接服务器失败!"); return ;
}
}在线程调用函数中调用CMulPackView类中的sendEmail,其中在deque<string> strMails中进行push_back和调用smtp的Connect方法出错,是什么问题呢?怎样解决?
同步访问数据的时候要加锁,线程之间通讯用消息和事件