首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

线程局部存储的错误, 如何解决

2013-02-24 
线程局部存储的异常, 怎么解决?在时钟中断函数里调一个activeX控件方法, 出现异常MIOGetData() called by

线程局部存储的异常, 怎么解决?
在时钟中断函数里调一个activeX控件方法, 出现异常

MIOGetData() called by thread 4340 but no TLS index allocated



下面是调用代码

int CALLBACK Cdemo1Doc::HighTimerCallProc(UINT wTimerID, UINT msg,DWORD dwUser,DWORD dwl,DWORD dw2)
{
CDemoDlg* Ptr = (CDemoDlg*)dwUser;  //控件在CDemoDlg对话框里
Ptr->GetData();//用指针调取数据函数发生异常,GetData()里用了控件的取数据函数,发生异常

return 0;
}


怎么解决?
[解决办法]
CDemoDlg* Ptr = (CDemoDlg*)dwUser;  //控件在CDemoDlg对话框里
if(Ptr)
{
    Ptr->GetData();//用指针调取数据函数发生异常,GetData()里用了控件的取数据函数,发生异常
}
[解决办法]
线程中可能不能直接访问这个对象等,可以发送消息等方式给CDemoDlg,由它来处理
[解决办法]
用消息没事吧。
ATL里不也是都用消息来处理的。延迟不了太多。总比出错强。:)

热点排行