Vb.net 应用程序未从任务管理器中释放

Vb.net 应用程序未从任务管理器中释放,vb.net,excel,Vb.net,Excel,我正在尝试将Windows窗体中的一些数据写入一个Excel文件,这样就行了 ' Excel load data Dim oExcelApp As New Microsoft.Office.Interop.Excel.Application Dim oWorkBook As Microsoft.Office.Interop.Excel.Workbook Dim oWorkSheet As Microsoft.Office.Interop.Excel.Wor

我正在尝试将Windows窗体中的一些数据写入一个
Excel
文件,这样就行了

        ' Excel load data
    Dim oExcelApp As New Microsoft.Office.Interop.Excel.Application
    Dim oWorkBook As Microsoft.Office.Interop.Excel.Workbook
    Dim oWorkSheet As Microsoft.Office.Interop.Excel.Worksheet

    oWorkBook = oExcelApp.Workbooks.Open("C:\Temp\Test.xlsx")
    oWorkSheet = oWorkBook.Worksheets(1)

    oWorkSheet.Range("A1").Value = "Test"

    oWorkBook.Save()
    oWorkBook.Close()
问题是:当我完成时,
Excel
仍在我的任务管理器中运行。当我按下按钮10次时,我的任务管理器中有10个
Excel
引用


问题:在将值写入
Excel
后,如何完全卸载
Excel

您必须关闭刚刚打开的连接。您可以在当前代码后添加此行:

oExcelApp.Quit();
来源和更多信息:

有关
quit()
方法的详细信息

重要提示:如果打开的工作簿尚未保存,此方法将显示一个对话框,请求保存

如果您不想这样做,您必须(1):保存所有打开的工作簿或(2)将
displayerts
设置为false

(一)

(二)


您需要退出Microsoft Excel,然后释放对象

此答案引用的代码:和


我在末尾添加了oExcelApp.Quit()。但我仍然可以在我的任务管理器中看到Excel?请给我一点时间,自己创建一个测试应用程序进行检查。这里已经有一个答案:。请检查它有很多关于为什么会发生这种情况的信息,请检查它。请您在回答中解释为什么会发生这种情况,以及为什么您需要调用
ReleaseComObject
,这样其他人就知道是什么导致了这个问题。看一看并提出一些问题。我知道去哪里看这是我的问题:)我请您解释。如果你不能
请引用你的来源感谢您的宝贵建议和参考资料。现在进入下一个障碍;)
workbooks.Save()
oExcelApp.DisplayAlerts = false
'Excel load data
Dim oExcelApp As New Microsoft.Office.Interop.Excel.Application
Dim oWorkBook As Microsoft.Office.Interop.Excel.Workbook
Dim oWorkSheet As Microsoft.Office.Interop.Excel.Worksheet

oWorkBook = oExcelApp.Workbooks.Open("C:\Temp\Test.xlsx")
oWorkSheet = oWorkBook.Worksheets(1)

oWorkSheet.Range("A1").Value = "Test"

oWorkBook.Save()
oWorkBook.Close()

oExcelApp.Quit()

'Release object references.
releaseObject(oWorkSheet)
releaseObject(oWorkBook)
releaseObject(oExcelApp)

----------------------------------------------------------------------------
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