如何在关机时优雅地杀死托管应用程序?

时间:2011-11-23 17:04:04

标签: c# .net shutdown

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

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

但是,当用户关闭Windows时,Windows会将会话查询结束的消息发送到隐藏的Excel应用程序,强制显示“您是否要将更改保存到'(EXCEL FILE)'?”。

如何覆盖此行为并优雅地终止excel文件?

我已经研究过通过VBA抑制保存提示,但是Session Ended消息不会执行此代码。

此外,我已经考虑通过处理我自己的C#app的Session Query End消息来杀死这个过程,但这是不可靠的,因为它是一个竞赛(什么应用程序首先得到消息,我的C#或我隐藏的excel文件)< / p>

修改 通过优雅地杀死,我的意思是在不提示用户的情况下关闭该过程。当用户选择退出我的程序时,我知道如何执行此操作,我只是不知道何时调用此例程。

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

跟踪内存中Excel的实例

1 个答案:

答案 0 :(得分:1)

如果没有显示您的代码,很难说出您的代码,但是,这里是我的代码片段,它在类似情况下工作(我认为)没有提示:

Excel.Application xl = new Excel.Application();
xl.Visible = false;
xl.DisplayAlerts = false;

//do something

xl.Quit();
Marshal.ReleaseComObject(xl);
xl = null;
GC.Collect();