Chinaunix首页 | 论坛 | 博客
  • 博客访问: 497535
  • 博文数量: 68
  • 博客积分: 2492
  • 博客等级: 大尉
  • 技术积分: 866
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-02 16:30
个人简介

承接移动应用(iOS、Android、WP),桌面应用(VC++、C#、VB、Qt)和嵌入式软件(单片机、ARM)开发。欢迎接洽。QQ:2335301794,E-mail:rabbitom@gmail.com。

文章分类

全部博文(68)

文章存档

2016年(1)

2015年(2)

2014年(4)

2013年(6)

2012年(1)

2011年(8)

2010年(16)

2009年(8)

2008年(10)

2007年(12)

我的朋友

分类: C/C++

2014-06-15 18:30:38

MFC中用DAO类访问Access数据库非常方便,但DAO不支持多线程,这里有一篇文章介绍了跨线程使用CDaoDatabase类存在的问题。
手上的一个项目,CDaoDatabase对象只在工作线程中创建和调用,虽然数据库操作正常,但关闭主窗口的时候会出错,原因是主线程中自动记录了CDaoDatabase对象的指针,主线程结束时会自动进行清理工作,但是对象已经在工作线程结束时被释放了。想了一下,试着将AfxDaoInit()函数和AfxDaoTerm()函数也放进工作线程就可以了:

点击(此处)折叠或打开

  1. UINT ImportDataFromDb(LPVOID param)
  2. {
  3.     MLCImportingDlg *pDlg = (MLCImportingDlg*)param;
  4.     AfxDaoInit();
  5.     CDaoDatabase db;
  6.     db.Open(pDlg->dbFileName, FALSE, TRUE);
  7.     //进行数据库操作
  8.     db.Close();
  9.     AfxDaoTerm();
  10.     pDlg->SendMessage(WM_CLOSE);
  11.     return 0;
  12. }

阅读(4464) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~