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
.
我在单独的线程中有一个异步 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
.