我在 C# 中使用 ExcelDNA 处理 Excel 插件。我有一个 Excel 工作表,其中 UDF 放置在许多单元格中,作为发出 RTD 请求的“公式数组”。
由于请求很大,所以分为几个线程。因此,响应是异步到达的,大约有 50 行。用户界面始终保持响应,没问题。数据或多或少很快到达,这不是问题。
问题是当响应到达时,单元格会随机重新渲染。如果我看到某些单元格的值发生了变化,则意味着我得到了响应,因此那里有 50 行。但是在随机时间或单击或滚动表格时,该值变得可见!它让我想起了一个简单的 Winforms 控件。如果你愿意的话,Invalidate 会丢失。查看结果所需的随机时间取决于要处理的待处理响应的数量。当我用 400 行测试时,问题就在那里,但实际上不需要解决。尽管这是一个大问题,但涉及 2000 行和 26 列。
我试图以编程方式触发 Excel 应用程序上的一些事件,但没有成功。我更改了一些超时,例如 RTD.ThrottleInterval,但没有任何效果。切换 ScreenUpdating 最终会引发 COM 异常(它可能不喜欢被摇晃太多)。我什至尝试了邪恶的 Application.DoEvents 以防万一。
这听起来像是一个非常经典的用例,并且很惊讶没有找到任何解决方案。
PS:任何澄清问题的线索表示赞赏。