UINT send_set_thread(LPVOID pParam)
{ CNetSet* pNetSet = (CNetSet*)pParam ;
pNetSet->m_strText = "" ;
pNetSet->UpdateData(false) ;
return 0 ;
}//这是我定义的线程函数,调用这个线程函数是:void CNetSet::ConfigNet()
{
AfxBeginThread(send_set_thread, this, 0, 0, 0, NULL) ;
}我想动态的在static控件上显示,但执行到pNetSet->UpdateData(false) ;时程序总是崩溃,不知为什么?
有什么好方法吗?
我问别人他说不能在非本窗口消息线程外的其他线程内调用任何和本窗口界面等一些牵扯到线程安全的东西 ,使用则直接崩溃 ,有什么需要就给窗口发消息,然后在窗口的消息线程内处理
对吗?
个人认为,程序崩溃的原因出在 CNetSet* pNetSet = (CNetSet*)pParam 这句话上(尽管他没有直接导致程序死掉)。因为,很明显,pParam 是个空指针LPVOID,即使你把它强转成CNetSet*类型也是徒劳,你的pNetSet也没有指向static控件所在的那个窗口。
要想解决问题,就要在你的子线程函数send_set_thread里面设法获取窗口的指针,这才是关键。
个人意见,仅供参考。