Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Excel中的长期RTD请求期间刷新工作表_C#_Excel_Excel Dna_Rtd - Fatal编程技术网

C# 在Excel中的长期RTD请求期间刷新工作表

C# 在Excel中的长期RTD请求期间刷新工作表,c#,excel,excel-dna,rtd,C#,Excel,Excel Dna,Rtd,我在C#使用ExcelDNA在Excel加载项上工作。我有一个Excel工作表,其中一个UDF放在许多单元格中,作为“公式数组”发出RTD请求 由于请求量很大,它被分成几个线程。因此,响应以异步方式到达,以大约50行为一组。用户界面始终保持响应,没有问题。数据到达的速度或多或少都很快,这不是问题 问题是,当响应到达时,这些单元格会随机重新排序。如果我看到一些单元格的值发生了变化,这意味着我得到了一个响应,因此有一个50行的区域。但是在一段随机时间后,或在单击或滚动表格时,该值变得可见!它让我想起

我在C#使用ExcelDNA在Excel加载项上工作。我有一个Excel工作表,其中一个UDF放在许多单元格中,作为“公式数组”发出RTD请求

由于请求量很大,它被分成几个线程。因此,响应以异步方式到达,以大约50行为一组。用户界面始终保持响应,没有问题。数据到达的速度或多或少都很快,这不是问题

问题是,当响应到达时,这些单元格会随机重新排序。如果我看到一些单元格的值发生了变化,这意味着我得到了一个响应,因此有一个50行的区域。但是在一段随机时间后,或在单击或滚动表格时,该值变得可见!它让我想起了一个简单的Winforms控件。如果愿意,请使缺少的控件无效。查看结果所需的随机时间取决于待处理的待处理响应的数量。当我用400行测试它时,问题是存在的,但实际上不需要解决。有2000行和26列,尽管这是一个大问题

我试图以编程方式在Excel应用程序上触发一些事件,但没有成功。我更改了一些超时,如RTD.ThrottleInterval,但没有任何效果。切换屏幕更新最终会抛出一个COM异常(它可能不太喜欢被震动)。我甚至尝试了邪恶的应用程序。以防万一

这听起来像一个非常经典的用例,我很惊讶没有找到任何解决方案



PS:任何澄清问题的线索都值得赞赏。

您是否尝试过打开或关闭屏幕更新?是的,它最终会引发COM异常。