我使用 Excel-DNA 编写了一个插件。 在不同的 Excel 版本中测试它(2016,365 在不同的 PC 上使用 Win 10)使用 Excel-Add-Ins 获取 .xll 工作正常 - 但是当 Excel 关闭时,是否创建/保留了一个隐藏的 Excel 实例?哪一个必须被任务管理器杀死。 (或者重新打开Excel不会打开加载项)
当我卸载加载项时,Excel 完全关闭。
奇怪的是,加载项显示在 Excel 加载项中,也显示在 com 加载项中
这种(错误)行为的原因是什么,我该如何解决。
感谢每一个建议
附言 ExcelDna 1.6.0、.Net Framework 4.7.2、vb.net
发生的事情是 Excel 进程没有终止,因为有未完成的 COM 引用。在您的 Excel-DNA 加载项中,如果您从非主线程 (
ManagedThreadId==1
) 的线程访问 Excel COM 对象模型,则很容易发生这种情况。从 Excel-DNA 加载项中,您应该只从主线程访问 COM 对象模型。
一些导致问题的例子是:
在某些情况下,您可以在可以安全调用 COM 对象模型的上下文中切换到主线程,并调用 Excel-DNA 辅助方法
ExcelAsyncUtil.QueueAsMacro
。这可以从任何线程调用,代码将在 Excel 可用时立即执行。