zoukankan      html  css  js  c++  java
  • 立即释放.net下的com组件

    众所周知,在.net的世界里,程序员只负责使用new创建对象,而对象的销毁则完全交给垃圾回收器负责,只有当发生垃圾回收的时候,.net中的类型才会被销毁。这通常不会引起什么不妥。但是,当使用了非托管的com对象的时候,则会带来特别的问题。
    com使用引用计数来确定对象的生存期,com客户每次引用对象的时候,就调用
    IUnKnown->AddRef(),而每次释放对象的时候,就调用
    IUnKnown->Release(),一旦引用计数达到零,就释放实例。
    问题就这样产生了,让我们看下面的代码:
    这是在CSDN的asp.net版广为流传的一段使用excel com组件导出excel文件到客户端的c#代码,在添加这段代码之前,运行了添加com引用的向导。
    Excel.Application  oExcel;  
    Excel.Workbook  oBook;  
    Object  oMissing  
    =  System.Reflection.Missing.Value;  
    oExcel  
    =  new  Excel.Application();  
    oBook  
    =  oExcel.Workbooks.Add(oMissing);  
    for  (int  i=1;i  <=4;i++)  
    {  
     oExcel.Cells[i,
    1]=i.ToString();  
     oExcel.Cells[i,
    2]=  "'bbb2  ";  
     oExcel.Cells[i,
    3]=  "'ccc3  ";  
     oExcel.Cells[i,
    4]=  "'aaa4  ";  
    }
      
    oBook.Saved  
    =  true;  
    oExcel.UserControl  
    =  false;  
    string filename = DateTime.Now.Ticks.ToString();
    string  mm=Server.MapPath(  ".")+ "\\" + filename + ".xls";//服务器保存地址  
    oExcel.ActiveWorkbook.SaveCopyAs  (mm);  
    oExcel.Quit();
    //GC.Collect();
    Response.Redirect(filename+".xls");
  • 相关阅读:
    FCN网络
    YOLO学习
    图像的几何变换-仿射变换和透射变换
    图像处理中的插值方法
    opencv中imgshow图像显示为灰色
    JDBC开发,数据库的连接
    Object类和String类
    动态线条,随鼠标移动吸附效果
    匿名对象,内部类,包,访问修饰符,代码块
    final关键字,static关键字
  • 原文地址:https://www.cnblogs.com/mokliu/p/2138898.html
Copyright © 2011-2022 走看看