0

我有一个异步 WPF 窗口在单独的线程中通过 Excel 运行。我正在尝试使用嵌入在 ExcelDna.Utilities 库中的 C API 调用来访问分布在各种 Excel 工作簿/电子表格中的大量数据。

我尝试的任何调用都会引发错误,我认为它是因为它在不同的线程中运行并且不访问 Excel 运行线程来获取其 Application 对象。

当我尝试通过宏(由功能区按钮调用的 ac# 方法)执行相同操作时,它可以正常工作。这是确保它是线程问题的第一个线索。

我是多线程的新手,但据我所知,我应该从 Dispatcher 对象中调用它。问题是我想不出办法做到这一点。

我的假设是正确的,还是我忽略了另一件事?如果是这样,如何从 Dispatcher 访问“ExcelDna.Utilities.XLApp”?

ExcelDna.Utilities.Workbook[] workbooks = ExcelDna.Utilities.XLApp.Workbooks;

顺便说一句,Office.Interop 在窗口线程中工作,但它不是我的选择。

4

1 回答 1

0

您可以使用 Excel-DNA 帮助程序在 C API 可以安全调用的宏上下文中安排代码在主线程上运行ExcelAsyncUtil.QueueAsMacro

于 2019-10-27T10:07:02.147 回答