C#彻底释放EXCEL

收集了一下
大概就这四种
 
1.//垃圾收集

        private void GCCollect()

        {

            GC.Collect();

            GC.WaitForPendingFinalizers();

            GC.Collect();

            GC.WaitForPendingFinalizers();

        }
        2.//释放资源

        private void NAR(object o)

        {

            try

            {

                System.Runtime.InteropServices.Marshal.ReleaseComObject(o);

            }

            catch { }

            finally

            {

                o = null;

            }

        }
        3.//杀进程

        private void killExcel()

        {

            Process[] myprcs = Process.GetProcessesByName("Excel");

            foreach (Process myprc in myprcs)

                myprc.Close();

        }
        4.退出时释放
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)

        {

            this.Dispose();

            this.Close();

        }
从我自己使用的经验来看
前2种都没作用
第三种是万能的,但是不安全
想做得好点的要取到process ID
关这个ID的excel
我这个没做
最好的就是第4种
this.Dispose();(这句)
即使你worksheet没close
也没有worksheet=null
excel照样消失
当然我的环境是
windows server 2008
visual studio 2008
也许前两种方法在一定条件下才适用
没有深入研究
大家继续

你可能感兴趣的:(C#彻底释放EXCEL)