| 网站首页 | 模板 | 资料 | 源码 | 工具 | 开发 | 设计 | 安全 | 项目 | 网络 | 图片 | 系统 | 数据库 | 博客 | 会员中心 | 小说 | 
MYFTP 精品资料下载
网络学院
学习资料
源码模版
您现在的位置: 精品下载 >> 开发 >> .net >> 文章正文 用户登录 新用户注册
.net中清除EXCEL进程最有效的方法            【字体:
.net中清除EXCEL进程最有效的方法
作者:佚名    文章来源:不详    点击数:    更新时间:2007-10-7

      最近用C#写winform,将EXCEL文件中的数据写入数据库中,将DataGrid中的数据导出为EXCEL格式。最后发现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();
    }
  }




文章录入:chqnet    责任编辑:chqnet 
  • 上一篇文章:

  • 下一篇文章:
  • 最新热点 最新推荐 相关文章
    Dreamweaver CS3 Beta界面功
    HTML中小meta的大作用
    样式表(CSS:Cascading Styl
    样式表(CSS:Cascading Sty
    Robots META标签和robots.tx
    HTML教程-各窗口间相互操作(
    target=“_blank”不符合标准
    meta标签的奥妙
    CSS:font-stretch
    text-underline-position
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)