如何在Excel启动时汇集所有RTD调用?

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

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

我不知道如何获取通知,因为当Excel启动和停止计算。 请帮忙。 另外如果你知道解决这个问题的其他方法,那就太好了。 我正在使用Excel 2007,C#3.5

请帮忙。 非常感谢你。 Rashmi

谢谢,

既然你使用RTD,我想知道这是否可以工作:

您可以定时批量调用后端。 在第一次RTD呼叫中启动一个定时器 – 短时间,也许是500ms,然后build立一个从RTD服务器的所有呼叫直到定时器到期为止的一批工作,然后将该批次发送到后端,并等待响应,同时在客户端上启动一个新的批处理。 批处理响应到达时,通知Excel主题已经更新,当Excel调用RefreshData时,将从批处理响应中返回单个项目。 通过这种方式,您的批处理可以有效地使用RTD的asynchronous性,但是您并不依赖于Excel的重新计算事件。

希望这是有道理的。