线程函数中如何调用类中的其他成员函数??

oyljerry 2004-07-08 09:54:43
我的线程函数定义成了静态函数,这样在线程函数中,想调用类的其他成员函数,我通过将this指针传进去的方法来调用类的成员函数的:
UINT CProxyView::ProxyThread(LPVOID pParam)
{
CProxyView* pTask = (CProxyView*) pParam; //传递指针
.......

pTask->Message(); //这里我调用类的其他成员函数

}
现在问题是,编译可以通过,为什么运行时,会弹出一对话框错误
显示什么:
Debug Assertion Failed
File:wincore。cpp
Line:980
我没有将指针传入时(也就是没有调用Message()函数时),没有这个错误,这个错误是个什么问题啊??谢谢
...全文
727 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2004-07-09
  • 打赏
  • 举报
回复
可类函数实现好像调用了别的一些mfc的函数,而这些函数又不是static的,这样,又有问题了!!
RockHwnd 2004-07-09
  • 打赏
  • 举报
回复
我也经常遇到这个问题,我的做法是把要调用的类函数Static,楼主看如何?
oyljerry 2004-07-08
  • 打赏
  • 举报
回复
查资料说:静态函数调用非静态函数会导致不定义的问题
具体来说,静态函数和非静态函数的初始化时间不一样
比如说,一个类的静态成员函数是不能调用非静态函数的,非静态函数只有在类的对象构造之后才可以调用,而静态函数则在之前,试想你调用一个尚未构造的对象的构造函数,当然会失败
那这个是不是说将this指针引入会有问题呢??
到底什么原因啊??
mickey_mouse 2004-07-08
  • 打赏
  • 举报
回复
这个问题我也很感兴趣,顶一下。
oyljerry 2004-07-08
  • 打赏
  • 举报
回复
Message()里面就是一个输出的操作
void CProxyView::Message(LPCTSTR lpszMessage)
{
CString strTemp = lpszMessage;
strTemp += _T("\r\n");
int len = GetWindowTextLength();
GetEditCtrl().SetSel(len,len);
GetEditCtrl().ReplaceSel(strTemp);
}
调试出错如下:Unhandled exception at 0x004d2e87 in proxy.exe: 0xC0000005: Access violation reading location 0x0000001c.
出错的函数为:void CWnd::SetWindowText(LPCTSTR lpszString)
{
ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));

if (m_pCtrlSite == NULL) 《-这个语句出错
::SetWindowText(m_hWnd, lpszString);
else
m_pCtrlSite->SetWindowText(lpszString);
}
gracezhu 2004-07-08
  • 打赏
  • 举报
回复
pTask->Message();这里面做了什么操作??传递this指针并没有任何错误,关键是你怎么调用的问题.call stack 出错的地方
oyljerry 2004-07-08
  • 打赏
  • 举报
回复
这个方法我也试了,好像还是有类似的问题!
这个问题好像是由于MFC不可以跨线程调用的原因!!
enterprise54 2004-07-08
  • 打赏
  • 举报
回复
其实将线程函数作为类的友元函数就可以解决问题。
oyljerry 2004-07-08
  • 打赏
  • 举报
回复
我的线程是在按下按钮之后启动的啊,然后这个线程就一直循环等待另一个进程对它发送请求啊,这样,当收到请求后,我就希望通过view类来显示一些信息啊!
ljseven 2004-07-08
  • 打赏
  • 举报
回复
对视进行操作必须在视create以后,也就是调用oncreate或者Create以后,你的这个错误是不是,视在create前,控建的句柄是空的时候产生的呢?

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧