C#利用com操作excel释放进程的解决方法
C#利用com操作excel释放进程的解决方法
发布时间:2016-12-28 来源:查字典编辑
摘要:第一个复制代码代码如下:System.Runtime.InteropServices.Marshal.ReleaseComObject(sh...

第一个

复制代码 代码如下:

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)

{

}

}

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

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C#教程学习
热门C#教程学习
编程开发子分类