线程中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;
}
......
}
...全文
77 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

7,732

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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