绞尽脑汁也想不出什么原因

Lzh_lee 2003-03-21 05:36:31
在程序中调用一个用VC写的DLL修改记录的内容,同时在释放了这个DLL后的下一行就读取该记录的内容,但结果是有时读出来的是修改后的,但有时读出来的却是修改前的,如果在释放DLL后的下一行添加行弹出一个messbox,等待一定的时间读出来的数据就肯定是修改后的。我想来想去觉得应该是在读取数据库时DLL仍没有对数据库进行Update。请教各位大侠这是什么原因?该怎么处理?
...全文
54 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lzh_lee 2003-03-26
  • 打赏
  • 举报
回复
to BinaryTreeEx(狂徒),这是不可能的,不可能每次都要用户这样提交的,何况这是一个产品。

to icansaymyabc(学习与进步),我是用LoadLibrary装载、FreeLibrary释放的,请问这样又该如何冲刷缓冲呢?请赐教。因为这个DLL还必须给客户的应用程序调用的,所以只好在dll里进行数据库的操作。
BinaryTreeEx 2003-03-22
  • 打赏
  • 举报
回复
dll中:
写完数据表后用commit提交,然后再返回
icansaymyabc 2003-03-21
  • 打赏
  • 举报
回复
我的脑汁没绞尽就想出了原因。
只是打字太累,没办法哦!
icansaymyabc 2003-03-21
  • 打赏
  • 举报
回复
DLL写的时候是写进了缓冲区,至于缓冲区的内容何时跑到硬盘里去,如果你不加以控制,那就是系统的事。所以结果常常不可预知。

解决你的问题有两个方法:
1 DLL退出前冲刷缓冲区,保证内容写到硬盘上。根据你写文件的手段不同冲刷缓冲的方法也不同。
2 不要在DLL里打开文件和打开纪录,而由调用者传递句柄给DLL。这样主程序和DLL共用缓冲,DLL反映到缓冲里的改变会立即被主程序得知。

第二种方法最好,速度快,减少硬盘读写次数。

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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