解析c#操作excel后关闭excel.exe的方法

 更新时间:2013年07月09日 09:09:34   作者:  
C#和Asp.net下excel进程一被打开,有时就无法关闭,尤其是website.对关闭该进程有过GC、release等方法,但这些方法并不是在所有情况下均适用
于是提出了kill process的方法,目前我见过的方法多是用进程创建时间筛选excel.exe进程,然后kill 。这样的方法是不精确的,也是不安全的,通过对网上一些关于Api运用文章的阅读,我找到了更为直接精确找到这个process并kill的方法
以下就是代码        
复制代码 代码如下:

using   System.Runtime.InteropServices;  

  [DllImport("User32.dll",   CharSet   =   CharSet.Auto)]  
  public   static   extern   int   GetWindowThreadProcessId(IntPtr   hwnd,   out   int   ID);  
  protected   void   Button1_Click(object   sender,   EventArgs   e)  
  {  
      Excel.ApplicationClass   excel   =   new   Microsoft.Office.Interop.Excel.ApplicationClass();  
      excel.Workbooks.Open("d:\aaa.xls",   Type.Missing,   Type.Missing,   Type.Missing,   Type.Missing,   Type.Missing,   Type.Missing,   Type.Missing,   Type.Missing,   Type.Missing,   Type.Missing,   Type.Missing,   Type.Missing,   Type.Missing,   Type.Missing);  
      IntPtr   t   =   new   IntPtr(excel.Hwnd);  
      int   k   =   0;  
      GetWindowThreadProcessId(t,   out   k);  
      System.Diagnostics.Process   p   =   System.Diagnostics.Process.GetProcessById(k);  
      p.Kill();                  
   }

以上代码百分百成功的关闭excel.exe进程
我的做法是结合两者,先释放资源,然后关闭进程。
同时网上说避免使用GC.Collect 方法 (),因为会导致整个clr进行gc,影响你的性能.所以我也没有调用GC.Collect

相关文章

  • C#集合之链表的用法

    C#集合之链表的用法

    这篇文章介绍了C#集合之链表的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C# 6.0的属性(Property)的语法与初始值详解

    C# 6.0的属性(Property)的语法与初始值详解

    下面小编就为大家带来一篇C# 6.0的属性(Property)的语法与初始值详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • C# 常用公共方法

    C# 常用公共方法

    这篇文章主要为大家详细介绍了C# 常用公共方法,分享给大家,供大家参考,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • C#滚动字幕的实现方法

    C#滚动字幕的实现方法

    这篇文章主要介绍了C#滚动字幕的实现方法,主要讲述了Graphics.DrawString函数的应用方法,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • C# 图片与二进制转换的简单实例

    C# 图片与二进制转换的简单实例

    这篇文章介绍了C# 图片与二进制转换的简单实例,有需要的朋友可以参考一下
    2013-09-09
  • C#委托与匿名委托详解

    C#委托与匿名委托详解

    这篇文章主要为大家详细介绍了C#委托与匿名委托的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • C#线程开发之System.Thread类详解

    C#线程开发之System.Thread类详解

    本文详细讲解了C#线程开发之System.Thread类,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 浅析C# 基础语法的使用

    浅析C# 基础语法的使用

    本篇文章对C#中基础语法的使用。进行了详细的分析介绍。需要的朋友参考下
    2013-05-05
  • c# Rank属性与GetUpperBound方法的深入分析

    c# Rank属性与GetUpperBound方法的深入分析

    本篇文章是对c#中的Rank属性与GetUpperBound方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 解析C#自定义控件的制作与使用实例的详解

    解析C#自定义控件的制作与使用实例的详解

    本篇文章是对C#中自定义控件的制作与使用实例进行了详细的分析介绍,需要的朋友参考下
    2013-05-05

最新评论