gpt4 book ai didi

.net - Excel 中的长时间运行操作

转载 作者:行者123 更新时间:2023-12-03 01:07:01 24 4
gpt4 key购买 nike

我有一个 Excel 电子表格和一个 .Net 库,它可以执行一些相当复杂的计算。 .Net 程序集通过 COM 公开给 Excel 中的 VBA 代码。

当我调用 .Net 库时,Excel UI 线程在计算过程中被阻塞。

这会阻止用户与 Excel 交互,并且在某些情况下会向用户指示 Excel 的标题栏(未响应)。

我对 Excel 2010 中的 VBA 不太了解,但是有没有办法在不同的线程中生成对我的 .Net 库的调用并向用户显示“正在进行”对话框?

最佳答案

这是可能的,但可能需要一些努力才能将所有内容连接起来。您可以采用多种方法来解决此问题,其中一种可能类似于:

  • VBA 在 UI 线程上调用 C# COM 对象
  • C# COM 对象启动 BackgroundWorker运行计算。请注意,您无法从 BackgroundWorkerDoWork 事件处理程序访问 Excel 对象模型。如果您想在计算过程中更新 Excel,BackgroundWorker 应使用 ReportProgress 方法报告 UI 线程上的进度。
  • ProgressChanged 事件处理程序(在 UI 线程上运行)中,C# 代码可以直接更新 Excel 对象模型,也可以调用 VBA 代码来执行更新。
  • VBA 代码可以在BackgroundWorker 运行时显示进度对话框,以避免任何重入问题。

关于.net - Excel 中的长时间运行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15365084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com