【发布时间】:2012-11-08 05:44:31
【问题描述】:
我创建了一个 excel 助手类,用于交互 excel 互操作服务。
但我注意到excel.exe 没有在服务器上关闭。
(windows 2008 64bit Japanese OS 和 office 2007 32bit)。
当我使用进程资源管理器检查时,它显示的工具提示如下:
Path:[Error opening process]
我做了excel.Quit() 和Marshal.FinalReleaseComObject(_xlApp) 但没有按预期工作,然后尝试通过processID 终止进程,仍然没有终止进程。
uint processID = 0;
GetWindowThreadProcessId((IntPtr)_hWnd, out processID);
if (processID != 0)
{
System.Diagnostics.Process.GetProcessById((int)processID).Kill();
}
然后我尝试了两种方法,但它关闭了所有手动打开的 excel 文档。
System.Diagnostics.Process[] procs = System.Diagnostics.Process.GetProcessesByName("EXCEL");
foreach (System.Diagnostics.Process p in procs)
{
int baseAdd = p.MainModule.BaseAddress.ToInt32();
if (baseAdd == _xlApp.Hinstance)
{
p.Kill();
}
}
System.Diagnostics.Process[] procs = System.Diagnostics.Process.GetProcessesByName("EXCEL");
foreach (System.Diagnostics.Process p in procs)
{
if (p.MainWindowTitle.Length == 0)
{
p.Kill();
}
}
关于如何处理这种情况的任何想法?
【问题讨论】:
标签: c# asp.net memory-management excel-interop