C#Excel RTD服务器多个实例断开一个工作表上的所有公式停止另一个公式

我在C#中为Excel创build了一个RTD服务器,它不断更新数据单元格,并且需要使用多个Excel实例。 问题是,如果在多个Excel实例中具有相同的RTD公式,并且我将其中一个Excel实例中的公式删除,则会调用RTD服务器中的DisconnectData方法,以使Excel其他实例中的相同公式停止更新即使他们仍然应该更新。

有没有办法在C#中强制每个Excel实例拥有自己的RTD服务器,或者有没有办法让RTD服务器正确识别多个Excel实例,并检查公式的所有实例是否已经从所有的Excel工作簿中删除我的RTD服务器中的DisconnectDatamethod。

假设你的RTD函数是用UDF包装的,一种解决scheme是从UDF调用中为每个工作表分配一个标识符(例如Guid)。 您可以将标识符作为自定义工作表属性持久化,然后将其添加到每个传出的RTD主题,这将在每个工作表到达您的RTD服务器时产生一组唯一的主题。

使用每个RTD调用访问自定义工作表属性在处理大量函数时将会对性能产生影响,但是,为了缓解这种情况,您应该在短时间内caching标识符。 一种方法是维护由工作表对象键入的字典查找。 在每个UDF调用的范围内,通过Application.Caller属性获取调用单元格关联的工作表(将其转换为Range并从中获取工作表属性),然后在字典中查找标识符。

我认为这是你的问题http://support.microsoft.com/kb/284883如何注册你的RTD服务器? 它是DCOM对象吗?