收集了一下
大概就这四种
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
也许前两种方法在一定条件下才适用
没有深入研究
大家继续