VB.Net程序设计:Excel开发释放资源问题(非杀死Excel进程)
很久很久以前就遇到过这个问题。也找到了解决的方法,就是忘记代码是怎么写的,在哪里。 最近也遇到过。只能通过搜索代码,看看代码是怎么写的。 印象中,解决的方法是有掉用System.GC.Collect(),还有说调用这个要和包含有Excel对象的函数分开。 庆幸的是代码里面有记录下方法的来源是:http://bbs.csdn.net/topics/70360199 下面是自己调用的代码: Private Sub BtnWrite2File_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles BtnWrite2File.Click ‘... Select Case Path.GetExtension(My.Settings.strWriteFilePath).ToLower Case ".txt" Write2Text() Case ".xls" '參考http://topic.csdn.net/t/20050531/16/4049025.html 18樓 Write2Excel() '否則無法釋放excel資源。 System.GC.Collect() System.GC.WaitForPendingFinalizers() Case ".xml" Write2Xml() End Select End Sub 而新项目的代码是在一个多线程中调用Excel的,释放方法采用下面方法,仍然无效。仍然需要测试 Dim th As New Threading.Thread(AddressOf Me.ExportDgv2ExcelFile) th.IsBackground = True th.Start() Private Sub ExportDgv2ExcelFile() '创建xlApp程序 releaSEObject(xlApp) End Sub Private Sub releaSEObject(ByVal obj As Object) Try System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) obj = Nothing Catch ex As Exception obj = Nothing Finally GC.Collect() End Try End Sub
-------------------------------- 来源记录: 1.设置权限 忘说了,程序中,如果象上面说的那样做的话 下面释放com的语句根本不需要了 System.Runtime.InteropServices.Marshal.ReleaseComObject(UsedRange); 垃圾回收会释放所有资源 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |