线程局部存储的异常, 怎么解决?
在时钟中断函数里调一个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里不也是都用消息来处理的。延迟不了太多。总比出错强。:)