c# - Excel 插件 - 注销时未调用 OnDisconnection/OnBeginShutdown

标签 c# .net excel-2003 office-interop comaddin

我在 Visual Studio 2008 中使用可扩展性 IDTExtensibility2 接口(interface)为 Excel 开发了一个共享插件。

它的功能非常基本。当一个工作簿被打开时,它被存储在一个打开的工作簿列表中,当它被关闭时,插件将创建一个新的文本文件,然后将一些 XML 写入文件,然后这个文件被另一个进程读取,然后反序列化 XML .

插件在正常操作下工作 - 因此,如果用户打开和关闭文件,那么插件会执行它应该做的事情,如果他们退出 Excel 并打开工作簿,那么它会做它应该做的事情。

问题是当用户打开 Excel 并打开工作簿并注销时。这两个方法:OnDisconnection 和 OnBeginShutdown 似乎根本没有被调用。

我做了两件事来测试这个:

  1. 我创建了一个 TextWriterTraceListener,它在调用这两个方法时写入日志文件。当 Excel 正常退出时,它们会被点击并将信息记录在日志文件中,但是当用户注销时,日志文件中没有任何内容。

  2. 在使用 File.CreateText(filename) 的这两种方法中,我创建了一个空白文件。当用户正常退出 Excel 时,会创建这些文件,但再一次,当通过注销关闭 Excel 时,不会创建这些文件。

有人知道如何解决这个问题吗?我需要在用户注销计算机时关闭 Excel 时进行捕获...<​​/p>

最佳答案

最终的解决方案是挂接到 Microsoft.Win32.SystemEvents.SessionEnding 并在触发此系统事件时手动调用 OnBeginShutdown 方法。

关于c# - Excel 插件 - 注销时未调用 OnDisconnection/OnBeginShutdown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4378203/

相关文章:

c# - 如何在没有 UrlHelper 的情况下创建 Url?

c# - 如何为知识库系统构建搜索引擎?

c# - 使用 C# 检查 IIS 中是否启用了表单例份验证

C# 通过 SSH.NET 发送 Ctrl+Y

c# - 每个请求的 AntiForgeryToken 更改

c# - 从 ThreadLocal<T> 中清除值的最佳方法

将信息附加到现有 Excel 文件时出现 java.lang.NullPointerException

excel - 在 Excel 中验证 IBAN

excel - 如果所有 Excel 列值不一致则返回

c# - C# 中的无限数字