我有一个异步 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 在窗口线程中工作,但它不是我的选择。