Excel-dna Add-in 关闭Excel后后台打开Excel

问题描述 投票:0回答:1

我使用 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-dna
1个回答
0
投票

发生的事情是 Excel 进程没有终止,因为有未完成的 COM 引用。在您的 Excel-DNA 加载项中,如果您从非主线程 (

ManagedThreadId==1
) 的线程访问 Excel COM 对象模型,则很容易发生这种情况。从 Excel-DNA 加载项中,您应该只从主线程访问 COM 对象模型。

一些导致问题的例子是:

  • 在异步函数的“内部”部分使用 COM 对象模型。
  • 从线程池线程中获得计时器回调,您可以在其中使用 COM 对象模型进行一些工作。
  • 有一些异步工作或完成时调用对象模型的任务。

在某些情况下,您可以在可以安全调用 COM 对象模型的上下文中切换到主线程,并调用 Excel-DNA 辅助方法

ExcelAsyncUtil.QueueAsMacro
。这可以从任何线程调用,代码将在 Excel 可用时立即执行。

© www.soinside.com 2019 - 2024. All rights reserved.