我在 Visual Studio 2008 中使用可扩展性 IDTExtensibility2 接口(interface)为 Excel 开发了一个共享插件。
它的功能非常基本。当一个工作簿被打开时,它被存储在一个打开的工作簿列表中,当它被关闭时,插件将创建一个新的文本文件,然后将一些 XML 写入文件,然后这个文件被另一个进程读取,然后反序列化 XML .
插件在正常操作下工作 - 因此,如果用户打开和关闭文件,那么插件会执行它应该做的事情,如果他们退出 Excel 并打开工作簿,那么它会做它应该做的事情。
问题是当用户打开 Excel 并打开工作簿并注销时。这两个方法:OnDisconnection 和 OnBeginShutdown 似乎根本没有被调用。
我做了两件事来测试这个:
我创建了一个 TextWriterTraceListener,它在调用这两个方法时写入日志文件。当 Excel 正常退出时,它们会被点击并将信息记录在日志文件中,但是当用户注销时,日志文件中没有任何内容。
在使用 File.CreateText(filename) 的这两种方法中,我创建了一个空白文件。当用户正常退出 Excel 时,会创建这些文件,但再一次,当通过注销关闭 Excel 时,不会创建这些文件。
有人知道如何解决这个问题吗?我需要在用户注销计算机时关闭 Excel 时进行捕获...</p>
最佳答案
最终的解决方案是挂接到 Microsoft.Win32.SystemEvents.SessionEnding
并在触发此系统事件时手动调用 OnBeginShutdown
方法。
关于c# - Excel 插件 - 注销时未调用 OnDisconnection/OnBeginShutdown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4378203/