惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
GbyAI
GbyAI
爱范儿
爱范儿
H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Check Point Blog
M
MIT News - Artificial intelligence
量子位
宝玉的分享
宝玉的分享
MongoDB | Blog
MongoDB | Blog
V
Visual Studio Blog
罗磊的独立博客
F
Fortinet All Blogs
美团技术团队
博客园_首页
博客园 - 【当耐特】
L
LangChain Blog
月光博客
月光博客
腾讯CDC
The Cloudflare Blog
D
Docker
博客园 - 聂微东
Stack Overflow Blog
Stack Overflow Blog
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - 玛瑙河

用matplotlib绘制带误差的条形图及中英文字体设置 Python中用MacFSEvents模块监视MacOS文件系统改变一例 修改gnome-shell扩展“Applications Menu”的菜单区域宽度。 VirtualBox 4.3.18 启动虚拟机时显示不能加载 R3模块并退出故障解决一例 自定义IPython Qt Console 窗口大小、字体、颜色 Windows Server 2012 R2 两个奇葩问题的解决 cherokee +php fastcgi 出现 No input file specified 故障一例 ubuntu下从源码编译安装cherokee liftweb整合ckfinder进行文件上传与管理 命令行下多线程下载工具 Axel 2.4 for Windows 正确设置H2数据库的Collation解决中文排序问题 解决MASM编程对话框中文问题 清除U盘子目录变成1K大小的快捷方式病毒的脚本 Scala 脚本的 pound bang 魔术 Google URL Shorter HTML中常用的特殊字符实体编码(Character entity references in HTML 4) - 玛瑙河 MrBayes v3.2 for windows 并行版下载及 checkpoint 功能介绍 童言无忌之小瑈与甲虫 MrBayes v3.1.2 for windows 并行版下载
强制垃圾回收解决.NET Office互操作中文件锁未能释放的问题
玛瑙河 · 2010-06-13 · via 博客园 - 玛瑙河

 (作者:玛瑙河,转载请注明作者或出处,) 

问题情形:

通过Interop创建一个Access数据库并关闭该数据库和Access,然后打开新创建的数据库文件进行某些操作,但是发现无法打开第一步生成的文件,原因是文件锁没有释放。

解决方案:

在进行第二步操作前,强制垃圾收集,释放第一步过程中创建的COM对象。

 1 {
 2 
 3  ...//block A 创建一个数据库db
 4  
 5 }
 6 
 7 access.Quit() //关闭access
 8 
 9 System.Runtime.InteropServices.Marshal.ReleaseComObject(db)
10 System.GC.Collect();
11 System.GC.WaitForPendingFinalizers();
12 
13 {
14 
15  ...//block B, 打开block A中创建的数据库文件
16 
17 }
18 

如果没有9-11行的强制垃圾回收,那么在block B中打开block A中创建的数据库文件时,就会发生无法获得文件锁的情况,说明调用access.Quit并不能立即释放文件锁。