CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

C# 释放内存与进程的问题

楼主jcyluck(C# + SQL 2005 QQ群:26096739)2006-12-26 18:18:28 在 .NET技术 / C# 提问

我写了一个DATAGRIDVIEW转出数据到EXCEL的代码,程序完成后会在指定的目录产生一个excel的文档,代码要引用EXCEL组件,程序的最后我用了诸如下列的清空对像与垃圾回收:  
  objBook   =   null;  
  objBooks   =   null;  
  objSheets=null;    
  objSheet=null;    
  objRange=null;    
   
  objExcel.Quit();  
  GC.Collect();  
  但程序运行完后,存在两个问题:  
   
  1.耗用的内存未完全释放,达到250M,如何释放掉程序占用的而又不需要的内存?  
  2.有一个EXCEL.EXE的进程未关闭,在任务管理器中可以看到,需要关闭整个程序后这个EXCEL.EXE的进程才会关闭,如何能在代码运行完就关闭这个进程? 问题点数:50、回复次数:8Top

1 楼azurebz(撒哈拉大森林)回复于 2006-12-26 19:28:07 得分 0

帮顶,学习Top

2 楼maliang00111(存时间入瓶)回复于 2006-12-26 20:38:02 得分 20

1.垃圾回收器只是尝试释放没有被引用的对象并回收它们的内存,CG.collect很占用资源,建议不要使用.可以实现IDisposable接口的Dispose方法来完成在特定时间的资源释放.  
  2.用Process的Kill()方法强制终止进程.  
  Top

3 楼jcyluck(C# + SQL 2005 QQ群:26096739)回复于 2006-12-27 10:38:44 得分 0

有做过EXCEL引用的朋友肯定会有更好的方法Top

4 楼scow(怡红快绿之小橙子|和谐权是第4代人权)回复于 2006-12-27 10:49:35 得分 20

System.Runtime.InteropServices.Marshal.ReleaseComObject(xxx);Top

5 楼llyzcy(计算机辅助化工设计)回复于 2006-12-27 12:24:42 得分 0

upTop

6 楼wdy9927()回复于 2006-12-27 13:39:30 得分 0

mark  
   
  当初也有这问题,后来不了了之。  
  Top

7 楼KJ_Wang(Java Every Day)回复于 2006-12-27 15:48:45 得分 10

 
  先关闭你这些对像,然后再写处理其他的,肯定可以。这种情况在VB6中经常碰到,因为没关对像,这样肯定内存被占用。继承自IDispose接口来做,这样可以全部释放。  
  Top

8 楼jcyluck(C# + SQL 2005 QQ群:26096739)回复于 2007-01-09 13:30:37 得分 0

还是没有解决Top

相关问题

关键词

得分解答快速导航

  • 帖主:jcyluck
  • maliang00111
  • scow
  • KJ_Wang

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo