线程中DAO数据库访问问题.

muquanyifan 2004-05-03 12:52:35
小弟的以下代码没有抛出任何异常,结果最后程序结束前发生内存不能access的错误
ThreadFunc 是线程的执行函数
UINT ThreadFunc(LPVOID lParam)
{
...
CString str;
CDaoDatabase* pdb = new CDaoDatabase;
str = _T("c:\\data.mdb");
openDatabase(&pdb,str);
closeDatabase(&pdb);
...
}

但是在一般的函数,比如按钮的相应函数中
void CExp1Dlg::OnButtonTest()
{
CString str;
CDaoDatabase* pdb = new CDaoDatabase;
str = _T("c:\\data.mdb");
openDatabase(&pdb,str);
closeDatabase(&pdb);

}
就没有问题.
调试出错在下面加*****的行,不能释放
void AFXAPI AfxDaoTerm()
{
_AFX_DAO_STATE* pDaoState = AfxGetDaoState();

// Close any CDaoWorkspaces left around
void* pvKey;
void* pvObject;
POSITION pos = pDaoState->m_mapWorkspaces.GetStartPosition();
while (pos != NULL)
{
pDaoState->m_mapWorkspaces.GetNextAssoc(pos, pvKey, pvObject);
((CDaoWorkspace*)pvObject)->Close();
}
pDaoState->m_mapWorkspaces.RemoveAll();

// Clean up engine object if necessary
if (pDaoState->m_pDAODBEngine != NULL)
{
pDaoState->m_pDAODBEngine->Release();***************
pDaoState->m_pDAODBEngine = NULL;
}
......
}
...全文
31 回复 点赞 打赏 收藏 举报
写回复
回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
相关推荐
发帖
Access
加入

7543

社区成员

Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
申请成为版主
帖子事件
创建了帖子
2004-05-03 12:52
社区公告
暂无公告