1

我有一个从实时源获取值的 RTD 服务器。问题是用户有相当大的 Excel 表,接近 20,000 个 RTD 公式。因此,当用户打开工作表时,所有 RTD 公式都会被触发,从而向服务器发送 20,000 个查询。这目前有效,但如果我可以将查询分组并将其发送到服务器,服务器可以执行得更好。

我的想法是维护一面旗帜。当计算开始时,标志将被设置为假,当计算结束时我可以重置它。调用 RTD 公式时,如果未设置标志,我不会将查询发送到 RTD 服务器,而是将其汇集。当标志设置为 true 时,我可以合并池查询并将其发送到服务器

我不确定如何在 excel 开始和停止计算时获得通知。请帮忙。此外,如果您知道解决此问题的任何其他方法,那就太好了。我正在使用 Excel 2007,C# 3.5

请帮忙。非常感谢。拉什米

谢谢,

4

1 回答 1

2

由于您使用的是 RTD,我想知道这是否可行:

您以定时批处理方式调用后端。您在第一次 RTD 调用中启动一个计时器 - 很短的时间,可能是 500 毫秒,然后从对您的 RTD 服务器的所有调用中建立一批工作,直到计时器到期,然后将批处理发送到后端并等待响应,同时在客户端上启动新批次。当批处理响应出现时,您会通知 Excel 主题已更新,并且当 Excel 调用 RefreshData 时,您会从批处理响应中返回单个项目。通过这种方式,您的批处理有效地使用了 RTD 的异步性,但您不受 Excel 的重新计算事件的约束。

希望这是有道理的。

于 2010-11-27T10:21:55.933 回答