首页
新闻
会员
周边
捐助
园子
·
关注
·
粉丝
·
会员
·
随便看看
·
消息
欢迎,请先
登录
或者
注册
。
登录
/
注册
闪存
博客
发言
小组
投递
新闻
提问
博问
添加
收藏
文库
问题反馈
问题列表
我关注的
我的博问
博问标签
如何彻底杀死EXCEL进程?
0
[已解决问题]
解决于 2008-03-26 19:03
<P>在使用EXCEL的COM对象生成报表的时候,进程中的EXCEL老是不能自行退出。</P> <P>找了一个杀死EXCEL进程的函数,但是只能在报表正常生成的时候才能杀死EXCEL进程,如果出现异常(如超时或用户自行关闭浏览器)则不能将EXCEL杀死,造成服务器进程中好多EXCEL进程,有时甚至在生成EXCEL时报进程错误,影响报表的正常导出。</P> <P>此问题已折磨很久,急待解决。。。</P>
.NET技术
C#
stewen
|
初学一级
|
园豆:
14
提问于:2008-03-24 21:46
显示帮助
使用"Ctrl+Enter"可进行快捷提交,评论支持部分 Markdown 语法:[link](http://example.com) _italic_ **bold** `code`。
<
>
分享
分享您的问题
最佳答案
0
最有效的方法就是下面这个方法: 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(); }
使名扬
|
菜鸟二级
|
园豆:230
|
2008-03-24 23:08
编辑文本
预览
上传图片
Ctrl+Enter键快速提交
其他回答(1)
0
如果实在不行,来个霸王硬上弓吧:先用Process.Kill();如果等一段时间还没退出,用TerminateProcess. [DllImport("kernel32.dll", SetLastError=true)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool TerminateProcess(IntPtr hProcess, uint uExitCode);
deerchao
|
园豆:8367
(大侠五级)
|
2008-03-25 00:45
编辑文本
预览
上传图片
Ctrl+Enter键快速提交
清除回答草稿
您需要
登录
以后才能回答,未注册用户请先
注册
。