【发布时间】:2016-01-08 18:42:56
【问题描述】:
这是我当前的代码:我有一个构建 excel 文件的函数。 该文件只有一个工作簿和一个工作表。 这个过程大约需要 10 分钟。
我想允许用户取消此过程,而不保存文件。但如果我取消程序 excel.exe 在任务管理器中徘徊。如何优雅地退出程序?
这是我的简化代码:
Dim oExcel As Excel.Application = New Excel.Application
oExcel.Workbooks.Add()
Dim sht As New Excel.Worksheet
sht = oExcel.Worksheets.Add
如果用户取消该功能,这是我的代码:尝试优雅地退出
If BackgroundWorker1.CancellationPending Then
e.Cancel = True
releaseObject(sht)
releaseObject(oExcel.ActiveWorkbook)
releaseObject(oExcel)
oExcel = Nothing
GC.Collect()
Exit Sub
End If
这是releaseObject函数
Shared Sub releaseObject(ByVal obj As Object)
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
obj = Nothing
Catch ex As Exception
obj = Nothing
End Try
End Sub
【问题讨论】:
-
您是否在任何地方对 Excel 的 Application 对象调用
.Quit?见stackoverflow.com/questions/17777545/… -
我尝试了各种版本的 activeworkbook.close(0) 和 activeworkbook.close 或 thisworkbook.close 并添加了 oExcel.quit.. 似乎没有一个工作