ExcelDna C API 来自异步 WPF 的调用 window 运行 在与 Excel 不同的线程中

ExcelDna C API calls from asynchronous WPF window running in a different thread than Excel

我在单独的线程中有一个异步 WPF window 运行 而不是 Excel。我正在尝试使用嵌入在 ExcelDna.Utilities 库中的 C API 调用来访问分布在各种 Excel workbooks/spreadsheets.

上的大量数据

我尝试的任何调用都会抛出一个错误,我假设它是因为它在另一个线程中 运行 并且不访问 Excel 运行 线程来获取它应用对象。

当我尝试通过宏(功能区按钮调用的 c# 方法)执行相同操作时,它没有问题。这是确定是线程问题的第一个线索。

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

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

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

顺便说一句,Office.Interop 在 window 线程中工作,但它不适合我。

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