我有以下代码(从在线教程中获得)。该代码正在工作,但我怀疑处理Excel COM对象的方式有点不合适。我们是否真的需要调用GC.Collect?或者什么是处理这个Excel COM对象的最佳方式?使用VB.NET处理Excel com对象的正确方法?
Public Sub t1()
Dim oExcel As New Excel.Application
Dim oBook As Excel.Workbook = oExcel.Workbooks.Open(TextBox2.Text)
'select WorkSheet based on name
Dim oWS As Excel.Worksheet = CType(oBook.Sheets("Sheet1"), Excel.Worksheet)
Try
oExcel.Visible = False
'now showing the cell value
MessageBox.Show(oWS.Range(TextBox6.Text).Text)
oBook.Close()
oExcel.Quit()
releaseObject(oExcel)
releaseObject(oBook)
releaseObject(oWS)
Catch ex As Exception
MsgBox("Error: " & ex.ToString, MsgBoxStyle.Critical, "Error!")
End Try
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
[如何在C#中正确清理Excel互操作对象]可能的重复(http://stackoverflow.com/questions/158706/how-to-properly-clean-up-excel-interop-objects-in-c -sharp) – 2012-04-25 04:43:56
@Petr Abdulin,C#是我的一门外语。不完全重复。我甚至很难理解所谓的重复中接受的答案。 – 2012-04-25 05:19:51
你不应该*需要*调用'GC.Collect()' – Seph 2012-04-25 06:00:48