(MFC编程)线程函数调用UpdateData崩溃
答案:1 悬赏:0
解决时间 2021-03-12 07:00
- 提问者网友:独菊痴梦
- 2021-03-11 11:51
线程函数定义如下(声明略):其中m_print_msg是输入框对应的变量
UINT myThreadFunc(LPVOID lparam){
Cclient_mfcDlg *DlgPtr=(Cclient_mfcDlg*)lparam;
DlgPtr->UpdateData(true);//如果用线程,这句会崩
DlgPtr->m_print_msg+="1";//这句不会崩
DlgPtr->UpdateData(false);//如果用线程,这句会崩
return 0;
}
这是开启线程的部分:只要一点按钮OK就会崩溃
void CxxxDlg::OnBnClickedOk()
{
...
AfxBeginThread(myThreadFunc,(LPVOID)this,0,0,0,0);//会崩溃,显示Debug Assertion Failed错误(这很笼统,没有说明是什么问题)
//myThreadFunc(this);//如果不用线程,而是像这样直接调用函数不会崩溃,能达到效果,显示出“1”
}
注:1.这个程序必须用多线程,因为以后线程里要加上网络通信的代码,这里只是简化的版本
2.尽量不发消息;如果必须要,请注明具体方法
最佳答案
- 二级知识专家网友:随心随缘不随便
- 2021-03-11 13:05
我的经验,我定义了一个结构,在结构里面定义对话框指针,对话框指针赋值给结构变量里面的对话框指针,然后把结构指针传递给myThreadFunc函数,这样就可以在线程理使用。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯