gpt4 book ai didi

c# - 如何终止基于 C# 的 Excel 应用程序实例?

转载 作者:太空宇宙 更新时间:2023-11-03 21:46:37 29 4
gpt4 key购买 nike

我正在编写一个小代码来读取一些 Excel 文件。我已链接 Excel 15 的 COM 库,并使用以下代码读取 Excel 文件:

excelInstance = new Microsoft.Office.Interop.Excel.Application();
Workbook workbook = excelInstance.Workbooks.Open(@excelOpenFileDialog.FileName);
Worksheet worksheet = workbook.Worksheets[1];
Range UsedRange = worksheet.UsedRange;
int lastUsedRow = UsedRange.Row + UsedRange.Rows.Count - 1;

问题是我不知道如何在处理完成后终止 Excel 实例。 Excel 应用程序界面不是一次性的,还有其他方法吗?

最佳答案

处理 Excel COM 对象可能有点挑剔。确保在完成后对 Workbook 调用 Close,并对 Excel.Application 实例调用 Quit

通过调用 FinalReleaseComObject() 释放对象,为了冗余,明确地使 COM 对象为空:

Runtime.InteropServices.Marshal.FinalReleaseComObject(sheet);
Runtime.InteropServices.Marshal.FinalReleaseComObject(workbook);
Runtime.InteropServices.Marshal.FinalReleaseComObject(app);


sheet = null;
workbook = null;
app = null;

最后,如果在调用适当的处理方法、显式释放它们并清空对对象的引用后,bugger 似乎仍然没有消失,请调用垃圾收集器:

GC.Collect();
GC.WaitForPendingFinalizers();

希望最终能做到这一点。

干杯。

编辑:此外,如果您的代码有可能在您使用 Interop 对象时或由于它们而崩溃,请务必在异常处理程序中执行此操作。即使父进程终止,您也会离开僵尸进程。

关于c# - 如何终止基于 C# 的 Excel 应用程序实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16672427/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com