【发布时间】:2014-07-30 16:29:43
【问题描述】:
我正在编写一个小型库来帮助管理 Excel 中的一些对象。我正在使用一个简单的控制台应用程序来测试这个 DLL,该应用程序调用库,然后将结果打印出来。然后我可以以任何典型的方式结束程序,通常是通过点击返回(从而完成ReadLine 调用)或点击窗口的关闭按钮。 但是,对 Excel 实例的引用会根据程序退出的方式而有所不同。
在我的程序中,如果找不到对 Excel 的现有引用,我使用以下行:
_app = new ExcelInterop.Application();
其中_app 是静态类或单例类中Microsoft.Office.Interop.Excel.Application 的一个实例(我都尝试过,两者的结果相同)。
假设程序创建了它自己的实例(并且没有找到已经打开的实例):
- 如果通过单击关闭窗口按钮退出程序,实例将保持打开状态:
-
如果程序通过到达
Main块中的代码末尾而退出,则该实例已释放,并且不再出现在任务管理器中
有没有办法让所有程序结束都像后一种情况一样?此外,这个 DLL 将继续在 WPF 应用程序中使用,在 WPF 中是否有类似的问题? 或者在逃?
也许最重要的是,这种行为的技术原因是什么?
【问题讨论】:
-
@jgok222 这似乎是一个很好的结论,但你知道引擎盖下到底发生了什么吗?最令人困惑的部分是我目前还没有编写任何清理代码。我完全期望该实例在所有情况下都保持打开状态。我想我对推送我不完全理解的代码感到有些不安。
标签: c# com console-application