1. 程式人生 > >C#匯出Excel後關閉程序(EXCEL.EXE)釋放資源的解決方案

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資源也比較多。
對於使用者少較少的應用還可以湊合,併發多了,真不敢想象。