ThisAddIn_ShutDown不会执行

在我的Outlook加载项中,我有以下几行。

private void ThisAddIn_Startup(object sender, System.EventArgs e) { MessageBox.Show("Hazaa!"); } private void ThisAddIn_Shutdown(object sender, System.EventArgs e) { MessageBox.Show("Shazoo..."); } 

虽然Outlook用一个很酷的“Hazaa”来迎接我! 一开始,当我’关闭它时,它拒绝对我说“Sahzoo ……”。 这两种方法都使用默认的自动生成代码以相同的方式注册,因此我不怀疑那里有任何错误。 我能想到的另一个解释是,当应用程序已经离开GUI并且隐藏了shazooing时,将执行关闭过程。

是这样吗? 如果没有,我怎么能让Outlook shazoo我? 如果是这样,我怎样才能直观地通知用户这样的shazoo?

编辑:

显然,由于O10,关闭不再被调用,因此下面的自动生成代码确实是错误的(或者至少不完美)。 由@ Christian.K提供。

 #region VSTO generated code private void InternalStartup() { this.Startup += new System.EventHandler(ThisAddIn_Startup); this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown); } #endregion 

您使用的是Outlook 2010吗?

从Outlook 2010开始,默认情况下,Outlook不会发出正在关闭的加载项的信号。 具体来说,Outlook在快速关闭期间不再调用IDTExtensibility2接口的OnBeginShutdown和OnDisconnection方法。 同样,在Outlook关闭时,使用Microsoft Visual Studio Tools for Office编写的Outlook加载项不再调用ThisAddin_Shutdown方法。

如果您使用的是Outlook 2010,则可以要求Outlook在关闭时通知您的插件。

 [RequireShutdownNotification]=dword:0x1 

密钥必须放在插件的注册表文件夹中