如何在关机时优雅地终止托管应用程序

本文关键字:终止 应用程序 关机 | 更新日期: 2023-09-27 18:15:45

我正在创建一个处理Excel应用程序的c#应用程序。

我正在加载的excel文件是预加载的(因为文件的周长需要一段时间才能加载),然后在用户请求时显示。

然而,当用户关闭Windows时,Windows发送会话查询结束消息到隐藏的excel应用程序,强制一个可见的"你想要保存更改到'(excel FILE)'吗?"

我如何覆盖这种行为和优雅地杀死excel文件?

我已经研究了通过VBA来抑制保存提示,但是会话结束消息不执行此代码。

此外,我已经研究过通过处理我自己的c#应用程序的会话查询结束消息来杀死进程,但这是不可靠的,因为它是一个竞赛(什么应用程序首先获得消息,我的c#或我隐藏的excel文件)

编辑:

我所说的优雅终止是指在不提示用户的情况下终止进程。当用户选择退出程序时,我知道该怎么做,我只是不知道何时调用这个例程。

Edit2: 我使用Microsoft.Office.Interop.Excel

如何在关机时优雅地终止托管应用程序

跟踪内存中的Excel实例

如果不显示您的代码,很难告诉您有什么,然而,这里是我的代码片段,它在类似的情况下工作(我认为)没有提示:

Excel.Application xl = new Excel.Application();
xl.Visible = false;
xl.DisplayAlerts = false;
//do something
xl.Quit();
Marshal.ReleaseComObject(xl);
xl = null;
GC.Collect();