vb.net操作Excel后进程残留Excel.exe问题

 方案一
调用Kill方法,结束进程,居然很多人就这么干了,居然也还有弄不掉的问题。首先,这样不能区分正常打开的Excel和软件调用的Excel,进程名称完全一样。于是要找一个关联的标签或者进程ID,也许能走通。
方案二
垃圾回收,System.GC.Collect()。百度的结论大多是这样,在程序结尾加上。事实上没有用。
奇葩的事情: 如果你把System.GC.Collect()放在程序入口,虽然不能帮你清理这次的Excel.exe,但是下一次运行的时候,会帮你清理掉,也就是说,不会反复运行,产生一堆Excel.exe,但是也不保证只保留一个。

问题分析:
有一个人的分析虽然没有给出解决方案,但是道理似乎有点。
调用Excel对象的过程相当于 复制 Excel A 得到 Excel B ,A为原件,B为调用件。所有Close、Quit方法都是在B
基于此:
方案三
把调用的过程放在线程内,启动System.GC.Collect(),问题完美解决!
 

    Private Sub outputExcel()

'操作EXCel的方法,包括关闭、退出。

    End Sub

    Private Sub ThreadExcel()

        Try

            Call outputExcel()

            System.GC.Collect()

            MsgBox("EXCEL导出完成")

        Catch ex As Exception

        Finally

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值