VSTO for Outlook - 浮动窗口令人难以置信的错误
本文关键字:窗口 令人难以置信 错误 for Outlook VSTO | 更新日期: 2023-09-27 18:34:48
此加载项的代码可在此处找到。演示行为的视频列在此解释的正文中。为方便起见,这里有两个链接错误解决方法
我一直在尝试使用Visual Studio 2010和2013为Outlook 2013编写加载项,但是我遇到了一个非常奇怪的错误。这些是重现在Outlook中安装加载项时发生的令人难以置信的错误的步骤。该平台是Windows 7 Enterprise上的Outlook 2010
- 双击电子邮件并在新窗口中将其打开(检查器窗口(
- 在Windows的任务栏中,您现在会注意到分层图标。在鼠标悬停时,窗口将显示主要的展望窗口和打开的电子邮件(以 Aero 主题呈现,如果已启用(
- 只需返回并关闭最大化的电子邮件即可。
- Windows任务栏仍然显示两个分层图标,如上所示,但现在如果你把鼠标悬停在上面电子邮件窗口 它不显示任何内容。它就像一个鬼东西,没有清理。
我可以证明这一点的最好方法是录制一个小视频,该视频可在此处获得
然而,这并不是故事的结局。它变得更好,更有趣。现在这样做。
- 重新启动展望
- 再次像以前一样最大化电子邮件。
- 将鼠标悬停在任务栏中的图标上以显示两层窗口的内容。您也可以从此处关闭最大化窗口。来吧,这样做。
- 这次如您所见,电子邮件的窗口已正确消失!任务栏现在显示 Outlook 的单个图标。
为了说明这种行为,我录制了另一个视频,可在此处获得。
关于此行为需要注意的几点
- 这仅在 Outlook 2010 上发生。在 Outlook 2013 中,此行为不会显示。
-
我已将其缩小到一行代码。在 OutlookExplorerWrapper 中,如果注释了以下行,则行为将从 Outlook 2010 中消失
var s = 邮件。身体;
实质上,简单地访问 MailItem 对象上的 Body 属性会导致此行为。我已经用RTFBody交换了身体,这再次使错误消失。
我在这里真的是机智的尽头。任何帮助都非常感谢!
我查看了示例项目,没有注意到任何用于发布基础 COM 对象的语句。使用 System.Runtime.InteropServices.Marshal.ReleaseComObject 在完成使用 Outlook 对象后释放该对象。然后在 Visual Basic 中将变量设置为 Nothing(在 C# 中为 null(以释放对该对象的引用。您可以在 MSDN 中的系统释放对象一文中阅读有关此内容的详细信息。
需要立即释放代码中的基础 COM 对象。