无论发生什么情况,都要确保Excel应用程序退出

时间:2015-09-08 07:32:05

标签: c# .net excel excel-interop

我有一个c#应用程序,可以创建一个简单的excel文件。这工作很好。但是我想确保创建的excel应用程序无论发生什么都关闭,所以我不会在后台运行大量的Excel进程。

下面是我正在使用的一些代码。我想我的问题是在Dispose方法中有没有办法测试XlApp是否仍处于打开状态,如果是,请确保应用程序已退出。

它就像下面的几行一样简单吗?

 if (XlApp != null)
 {
     XlApp.Quit();
     releaseObject(XlApp);
 }

我的代码示例

public class ExcelMain : IDisposable
{
        public void MadeUpMethod()
        {
            // do some stuff here
            XlApp.Quit();     // worried that if the line is not reached will the excel application be closed
        }

        public void Dispose()
        {
            Dispose(true);
        }

        protected virtual void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (Rng != null) releaseObject(Rng);
                if (XlWorksheet != null) releaseObject(XlWorksheet);
                if (XlSheets != null) releaseObject(XlSheets);
                if (XlWorksheets != null) releaseObject(XlWorksheets);
                if (XlWorkbook != null) releaseObject(XlWorkbook);
                if (ActiveWindow != null) releaseObject(ActiveWindow);
                if (XlApp != null) releaseObject(XlApp);
            }
        }

        private static void releaseObject(object obj)
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
        }
}

0 个答案:

没有答案