现在的位置: 首页 > 综合 > 正文

C#利用com操作excel释放进程的解决方法

2012年02月12日 ⁄ 综合 ⁄ 共 840字 ⁄ 字号 评论关闭

第一个

复制代码 代码如下:
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheets);
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
System.Runtime.InteropServices.Marshal.ReleaseComObject(range);

excelApp = null;
wbclass = null;
sheets = null;
worksheet = null;
range = null;
GC.Collect();
GC.WaitForPendingFinalizers();

释放不彻底,还是有进程存在。

第二种

复制代码 代码如下:
//调用底层函数获取进程标示
[DllImport("User32.dll")]
public static extern int GetWindowThreadProcessId(IntPtr hWnd, out int ProcessId);
private static void KillExcel(Microsoft.Office.Interop.Excel.Application theApp)
{
int id = 0;
IntPtr intptr = new IntPtr(theApp.Hwnd);
System.Diagnostics.Process p = null;
try
{
GetWindowThreadProcessId(intptr, out id);
p = System.Diagnostics.Process.GetProcessById(id);
if (p != null)
{
p.Kill();
p.Dispose();
}
}
catch (Exception ex)
{

}
}

这个方法比较好,我试过了可以关闭掉进程。

抱歉!评论已关闭.