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

推荐订阅源

The Cloudflare Blog
L
LangChain Blog
WordPress大学
WordPress大学
V
V2EX
M
MIT News - Artificial intelligence
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Stack Overflow Blog
Stack Overflow Blog
J
Java Code Geeks
F
Fortinet All Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
腾讯CDC
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
Docker
Recent Announcements
Recent Announcements
GbyAI
GbyAI
博客园 - 叶小钗
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
人人都是产品经理
人人都是产品经理
Engineering at Meta
Engineering at Meta
Y
Y Combinator Blog
雷峰网
雷峰网
The GitHub Blog
The GitHub Blog

博客园 - 太阳天子

汽车导航仪哪个好 JavaScript总结 A Programmers Overview Of C# 结构和类 ADO.net 中数据库连接方式 浅析.Net下的多线程编程 .net如何实现页面间的参数传递 .NET组件和COM组件之间的相互操作 C#装箱拆箱和性能 asp.net中常用的一些小技巧 Microsoft SQL Server 2005 安装程序 错误解决 .net中的正则表达式使用高级技巧 (四)(from internet) net中的正则表达式使用高级技巧 (三)(from internet) .net中的正则表达式使用高级技巧 (二)(from internet) .net中的正则表达式使用高级技巧 (一)(from thinhunan's blog) ASP.NET 中的正则表达式(microsoft) 正则表达式语法(from internet) 正则表达式的基本语法 探索设计模式系列文章
.net中清除EXCEL进程最有效的方法
太阳天子 · 2006-05-15 · via 博客园 - 太阳天子
.net中清除EXCEL进程最有效的方法
http://www.51cto.com 2005-09-20 16:47 作者:51cto.com整理 出处:.51cto.com

【导读】本文写的是.net中清除EXCEL进程最有效的方法

最近用C#写winform,将EXCEL文件中的数据写入数据库中,将DataGrid中的数据导出为EXCEL格式。最后发现EXCEL内存泄漏,在应用程序不退出的情况下,总是有一个EXCEL进程不能清除!

其实最有效的方法就是下面这个方法:

1、对excel操作做成一个函数,然后调用此函数。在函数中调用GC.Collect();无用,因为GC不回收调用自己的那一段代码块。

2、在函数的下面调用GC.Collect();语句。你会发现EXCEL进程没有了。

例如:

private void Import() {

Excel.Application myExcel  = new Excel.Application();

myExcel.Workbooks.Add(openFileDialog1.FileName);

//........

//读取EXCEL文件,导入到数据库.

//清除excel垃圾进程

myExcel.Workbooks.Close();

myExcel.Quit();

System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);

myExcel = null;

}

private void ExcelImport() {

Import();

GC.Collect();

}

//以下按button1按钮,使用多线程读取EXCEL文件,导入到数据库.

private void button1_Click(object sender, System.EventArgs e) {

if(openFileDialog1.ShowDialog() == DialogResult.OK) {

System.Threading.Thread t=new System.Threading.Thread(new System.Threading.ThreadStart(ExcelImport));

t.Start();

}

}