MFC中主对话框关联的类对象this指针不能被正确传递的有关问题
MFC中主对话框关联的类对象this指针不能被正确传递的问题
用MFC建立了对话框应用程序,程序中用线程,该线程的入口函数是全局函数,我要获取主对话框关联的类对象中成员变量的值,因此我要传递this指针,因此是AfxBeginThread(::ThreadFunc, this);,在入口函数中把指针类型转换回来了。
(ps:确实是this,而不是LPVOID(this))
但是运行程序会奔溃。
在网上搜索,发现也有人遇到这个问题http://www.baidu.com/link?url=vk0GOklUcJwXJYmunMf8zR13JLUzZd3KlnJ_BwGI8pAolGx1xo08mQlJY2ehuvkep4KW5Ba2rr5-Xys9CxWF28CdjILfMtGmSb48bgKhDte&ie=utf-8&f=8&tn=baidu&wd=afxbeginthread%20this%20test&inputT=2232
有人提到就是说是这个是因为对象是局部变量,被系统自动释放了。如果改为指针变量那就没问题了……
那我想我的主对话框关联的类对象是不是也是内存被释放了呢?如果被释放就会导致程序运行奔溃吗?
这种情况我应该怎么做呢?
------解决思路----------------------
这个应该不是不能传递this的问题,应该是多个线程使用了this对象引发冲突,另外,lz应该清楚传递的是否传递的是局部变量,
如果对象被释放后,还使用,那么程序会崩溃的
------解决思路----------------------
"主对话框关联的类对象"
必须还存在!
------解决思路----------------------
不同的线程中不可以互相直接调用控件取值,只能通过公共变量或消息机制传递数据,否则必定造成程序崩溃。
------解决思路----------------------
多线程操作mfc窗体最好是通过PostMessage或者SendMessage给窗体发消息,然后在在消息处理函数里进行操作。
------解决思路----------------------
"我要访问的是MFC自己创建的主对话框关联类的对象的成员变量"
请说清楚到底是什么? (代码)
------解决思路----------------------
App类中主对话框CTestDlg dlg在调用DoModal函数会阻塞线程,dlg对象不会释放;关闭对话框DoModal函数返回后App的Instance函数执行完,dlg对象就释放了。
如何你的程序在关闭对话框时崩溃可能跟dlg对象释放有关,否则可能还有其他引起崩溃的原因
用MFC建立了对话框应用程序,程序中用线程,该线程的入口函数是全局函数,我要获取主对话框关联的类对象中成员变量的值,因此我要传递this指针,因此是AfxBeginThread(::ThreadFunc, this);,在入口函数中把指针类型转换回来了。
(ps:确实是this,而不是LPVOID(this))
但是运行程序会奔溃。
在网上搜索,发现也有人遇到这个问题http://www.baidu.com/link?url=vk0GOklUcJwXJYmunMf8zR13JLUzZd3KlnJ_BwGI8pAolGx1xo08mQlJY2ehuvkep4KW5Ba2rr5-Xys9CxWF28CdjILfMtGmSb48bgKhDte&ie=utf-8&f=8&tn=baidu&wd=afxbeginthread%20this%20test&inputT=2232
有人提到就是说是这个是因为对象是局部变量,被系统自动释放了。如果改为指针变量那就没问题了……
那我想我的主对话框关联的类对象是不是也是内存被释放了呢?如果被释放就会导致程序运行奔溃吗?
这种情况我应该怎么做呢?
------解决思路----------------------
这个应该不是不能传递this的问题,应该是多个线程使用了this对象引发冲突,另外,lz应该清楚传递的是否传递的是局部变量,
如果对象被释放后,还使用,那么程序会崩溃的
------解决思路----------------------
"主对话框关联的类对象"
必须还存在!
------解决思路----------------------
不同的线程中不可以互相直接调用控件取值,只能通过公共变量或消息机制传递数据,否则必定造成程序崩溃。
------解决思路----------------------
多线程操作mfc窗体最好是通过PostMessage或者SendMessage给窗体发消息,然后在在消息处理函数里进行操作。
------解决思路----------------------
"我要访问的是MFC自己创建的主对话框关联类的对象的成员变量"
请说清楚到底是什么? (代码)
------解决思路----------------------
App类中主对话框CTestDlg dlg在调用DoModal函数会阻塞线程,dlg对象不会释放;关闭对话框DoModal函数返回后App的Instance函数执行完,dlg对象就释放了。
如何你的程序在关闭对话框时崩溃可能跟dlg对象释放有关,否则可能还有其他引起崩溃的原因