首页 > 编程 > .NET > 正文

.net中清除EXCEL进程最有效的方法

2024-07-10 12:58:43
字体:
来源:转载
供稿:网友
,欢迎访问网页设计爱好者web开发。 最近用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();
    }
  }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表