C#匯出Excel後關閉程序(EXCEL.EXE)釋放資源的解決方案
#region Kill Special Excel Process
[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
static extern int GetWindowThreadProcessId(IntPtr hWnd, out int lpdwProcessId);
//推薦這個方法,找了很久,不容易啊
public void KillSpecialExcel(Excel.Application m_objExcel)
{
try
{
if (m_objExcel != null)
{
int lpdwProcessId;
GetWindowThreadProcessId(new IntPtr(m_objExcel.Hwnd), out lpdwProcessId);
System.Diagnostics.Process.GetProcessById(lpdwProcessId).Kill();
}
}
catch (Exception ex)
{
Console.WriteLine("Delete Excel Process Error:" + ex.Message);
}
}
#endregion
這似乎是一個完美的解決方案了,但是速度實在不敢保證,而且耗費的記憶體和CPU資源也比較多。
對於使用者少較少的應用還可以湊合,併發多了,真不敢想象。