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

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
aimingoo的专栏
aimingoo的专栏
F
Fortinet All Blogs
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
MongoDB | Blog
MongoDB | Blog
月光博客
月光博客
The Cloudflare Blog
量子位
T
Tailwind CSS Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
MyScale Blog
MyScale Blog
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
G
Google Developers Blog
D
DataBreaches.Net
V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
U
Unit 42
博客园 - 聂微东
有赞技术团队
有赞技术团队
A
About on SuperTechFans

博客园 - 太阳天子

汽车导航仪哪个好 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();

}

}