【发布时间】:2017-06-22 00:36:06
【问题描述】:
我有以下代码:
void COrganizerProgressDlg::LaunchWorkerThread()
{
CWorkerData data;
data.m_pWndOrganizerProgressDlg = this;
data.m_pWndImageOrganizerDlg = m_pWndImageOrganizerDlg;
::AfxBeginThread(RunBackgroundWorker, &data);
}
这是我的RunBackgroundWorker() 方法,这是一个static 方法。
UINT COrganizerProgressDlg::RunBackgroundWorker(LPVOID pParam)
{
try
{
// Run organizer engine
COrganizerEngine engine(m_nNotifyMessage, (CWorkerData*)pParam);
engine.Run();
}
catch (CException *e)
{
e->ReportError();
e->Delete();
}
return 0;
}
数据被用于初始化我的工人阶级中的设置。
问题是我的data 变量在调用AfxBeginThread() 之前包含有效数据,但在RunBackgroundWorker() 中似乎包含垃圾。
我错过了什么?如何从我的工作线程访问这些数据?
【问题讨论】:
标签: c++ multithreading mfc thread-safety