[已解决问题] 如何彻底杀死EXCEL进程?
提问时间: 2008-03-24 21:46
浏览:436 次

在使用EXCEL的COM对象生成报表的时候,进程中的EXCEL老是不能自行退出。

找了一个杀死EXCEL进程的函数,但是只能在报表正常生成的时候才能杀死EXCEL进程,如果出现异常(如超时或用户自行关闭浏览器)则不能将EXCEL杀死,造成服务器进程中好多EXCEL进程,有时甚至在生成EXCEL时报进程错误,影响报表的正常导出。

此问题已折磨很久,急待解决。。。

提问者:stewen - 初学一级
最佳答案
最有效的方法就是下面这个方法: 1、对excel操作做成一个函数,然后调用此函数。在函数中调用GC.Collect();无用,因为GC不回收调用自己的那一段代码块! 2、在函数的下面调用GC.Collect();语句。你会发现EXCEL进程没有了! 例如: private void Import() { Excel.Application myExcel = new Excel.Application(); myExcel.Workbooks.Add(openFileDialog1.FileName); //........ //读取EXCEL文件,导入到数据库. //清除excel垃圾进程 myExcel.Workbooks.Close(); myExcel.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel); myExcel = null; } private void ExcelImport() { Import(); GC.Collect(); }
2008/3/24 23:08:09 回答者:使名扬


提问者对于答案的评价:谢谢
其它回答(1)
如果实在不行,来个霸王硬上弓吧:先用Process.Kill();如果等一段时间还没退出,用TerminateProcess. [DllImport("kernel32.dll", SetLastError=true)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool TerminateProcess(IntPtr hProcess, uint uExitCode);
5个月前   回答者:deerchao - 大侠五级
评论
   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题

> 问题排行榜

相关链接