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

推荐订阅源

WordPress大学
WordPress大学
S
Secure Thoughts
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Troy Hunt's Blog
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗
博客园 - 司徒正美
NISL@THU
NISL@THU
小众软件
小众软件
宝玉的分享
宝玉的分享
Hugging Face - Blog
Hugging Face - Blog
T
Threat Research - Cisco Blogs
Hacker News: Ask HN
Hacker News: Ask HN
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园_首页
罗磊的独立博客
S
Securelist
N
News | PayPal Newsroom
大猫的无限游戏
大猫的无限游戏
T
Tenable Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
爱范儿
爱范儿
Spread Privacy
Spread Privacy
V2EX - 技术
V2EX - 技术
J
Java Code Geeks
V
V2EX
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
I
Intezer
腾讯CDC
P
Privacy & Cybersecurity Law Blog
SecWiki News
SecWiki News
Google DeepMind News
Google DeepMind News
P
Palo Alto Networks Blog
Cloudbric
Cloudbric
Apple Machine Learning Research
Apple Machine Learning Research
N
News and Events Feed by Topic
Latest news
Latest news
L
LINUX DO - 最新话题
Recent Commits to openclaw:main
Recent Commits to openclaw:main
博客园 - 【当耐特】
Last Week in AI
Last Week in AI
The Cloudflare Blog

博客园 - HQT

类似 MSN 的提示窗口 asp.net 1.1 部分按钮不能提交 - canNOT submit issue .NET 2.0 和1.1 共用时,出现"服务器应用程序不可用"的错误. - HQT 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005 Oracle 数字转换为英文的函数 取中英文数字混合的长度 ( C# + ORACLE ) - HQT 找不到可安装的 ISAM -- ConnectionString 问题.... .net 使用 ACCESS 库一个小问题 C# 中转换 vb.net 换行符等Ascii 字符 SQLServer 安装过程出错 安装程序配置服务器失败 (解决篇) Web 横向打印 Excel 小写金额转大写 可随文本变化而出现不同选择项的文本框+下拉列表选择 获取Excel合并单元格数据-通用方法 如何判断Excel单元格是否为合并单元格 DNN-HttpModule.UrlRewrite( url重写 ) Xceed Components DNN 4.0 安装 together2.0 for vs.net2003 下载
关于 Excel 的结束进程的方法讨论
HQT · 2005-11-24 · via 博客园 - HQT

网上这个问题已经多得不能再多了,
几乎有涉及 .net 操作 Excel ,必然有人问。
有提到用 GC.Collect 强制垃圾回收的,但不一定管用
(我测试过,第一个进程无论如何都释放不了,其他新建的进程可以被不断替换掉)
不过这样强制回收可能造成其他对象资源管理的问题,还是不大妥当。

后来想到一个方法:
通过创建时的进程ID,在不使用Excel对象时,将该ID结束掉。
比如自己写个Excel操作类,在这个类实例化时,通过遍历进程列表,判断所有Excel进程的创建时间,
将最短的时间作为自己新创建的Excel进程(由于此操作时间极短,理论上应该可以避免并发操作造成的失误),然后获取这个进程的 ProcessID ,保存起来。
当使用完这个类的实例对象后,再通过 ProcessID 获取到进程,调用 Kill 直接杀死。
基本上都不会出现什么错误。

当然还有种情况,如果在操作Excel中途被强行中止了程序(比如Web网页直接关掉之类),
那Excel进程就无法释放了?怎么解决?

简单,可以在前面遍历进程列表获取最短时间的时候,加个判断,是否超出超时时间(比如设定1天为超时时间,如果创建时间与当前时间的差值大于这个超时时间,则直接 Kill  掉即可)

well....