【问题标题】:visual studio Word Addin taking more than 15 seconds to close wordVisual Studio Word Addin 需要超过 15 秒才能关闭单词
【发布时间】:2014-12-04 08:18:41
【问题描述】:

我使用 Visual Studio 2012 开发了 Word 插件。.net 框架是 4.5。它工作正常。唯一的问题是当用户关闭 word 文件时,在我们点击“x”后,word 需要大约 15 秒才能关闭。

它会在我的机器上立即关闭。我的机器配置如下: - .Net 框架 4.5.2。 - VSTo 10.0.50903 和 - 操作系统是windows 7 64位。

虽然客户端计算机需要时间才能关闭(15 秒或更长时间)。客户端具有以下配置。 - 适用于 Office 运行时 x64 版本的 Visual Studio 2010 工具为 10.0.50325.00 - 他们访问 word 的 Citrix 服务器的操作系统。 Windows 服务器 2008 R2 企业版 SP1 64 位 - .Net 框架版本? 4.5.2

他们没有安装任何其他插件。

谢谢!

【问题讨论】:

  • 你能显示你用来打开和关闭文档的代码吗?
  • 用户通过单击 word 文件上的关闭按钮(X 符号)来关闭 Word。我的插件只是在 CRM 中创建了一些记录。即使用户没有点击我的插件按钮并直接关闭 word 也需要时间来关闭。
  • 这个问题你解决了吗?我的项目遇到了同样的问题...

标签: c# visual-studio visual-studio-2012 vsto office-addins


【解决方案1】:

尝试拦截 OnFormClosing 事件并执行以下操作

protected override void OnFormClosing(FormClosingEventArgs e)
{
   yourWordObject.Quit();
   System.Runtime.InteropServices.Marshal.FinalReleaseComObject(yourWordObject);
   base.OnFormClosing(e);

}

【讨论】:

  • 我们为什么需要这个?为什么它只发生在客户端环境中?在我的机器上不需要时间。我检查了很多机器,但只发生在客户端机器上。此代码将添加到哪里?在 this.Addin.cs 类中?
  • 你能拦截关闭窗口事件吗?也许我写的代码可以帮助你从你的单词对象中释放内存
  • 我在功能区工具栏上添加了按钮。 Onclick 按钮我正在调用 ThisAddIn.cs 的方法。 ThisAddIn.cs 有两个事件 ThisAddIn_Startup 和 ThisAddIn_Shutdown。我应该写代码 yourWordObject.Quit(); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(yourWordObject) 关闭事件?单击按钮时,我没有显示任何窗口或表单。
  • 好的..我会试试的。但是即使用户没有单击 Addin 按钮,也会发生此问题。如果我们禁用我们的 Adddin 单词会顺利关闭。
  • 它没有帮助。我还需要 cal gc.collect 吗?
【解决方案2】:

您是否尝试删除 normal.dot 文件(如果需要,不要忘记将其复制到某个地方以恢复)?

您是否尝试创建日志文件以查看有问题的 PC 上发生了什么?

还要确保立即释放代码中的所有底层 COM 对象。使用 System.Runtime.InteropServices.Marshal.ReleaseComObject 在您使用完 Word 对象后释放它。然后在 Visual Basic 中将变量设置为 Nothing(在 C# 中为 null)以释放对对象的引用。您可以在Systematically Releasing Objects 文章中了解更多相关信息。它与 Outlook 相关,但相同的原则可以应用于所有 Office 应用程序。

【讨论】:

  • 不,我没有尝试删除 Normal.dotm。即使有 Normal.dotm 文件,它也能正常工作。问题出在我创建的 Word 插件上。当我们禁用 Word 插件时,它会正常关闭。
  • 您能否通过新创建的空插件项目重现该问题?
  • 是的。我也尝试过 Empty 项目,但问题仍然存在。
  • 您是否在示例加载项中添加了任何代码?您是否为 Word 安装了任何其他加载项?
  • 您是否尝试在有问题的 PC 上安装相同版本的 VSTO 运行时?有帮助吗?
【解决方案3】:

这可能是使用 ElementHost 的问题。据说它已在 2014 年 4 月 10 日发布的 VSTO 2010 运行时中修复。见this link(标题是Windows 8,但我认为这部分不相关)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多