c# 4.0 -是否可以在多个excel实例中使用相同的RTDServer ?



我有一个c# RTDServer,在excel的一个实例中工作得很好。定义如下:

[Guid("1D50EF28-A1BE-4BE9-9214-46A48085ADFF")]
[ProgId("Acme.RtdServer")]
public class RTDServer : IRtdServer
{
   // IRtdServer members:
   // ...
}

当服务器"连接"时,excel调用

#region IRtdServer Members    
public int ServerStart(IRTDUpdateEvent CallbackObject)
{
    _callback = CallbackObject;
}

带有一个回调对象,该对象可以用来通知excel可以收集更新:

_callback.UpdateNotify();

问题是,如果我有excel的第二个,第三个等实例,ServerStart永远不会被调用,这意味着我不能通知excel,新的更新准备好了。这里的一篇文章建议对进程外的rtdserver采取类似的行为。我的实现是一个线程,进程中的RTDServer。

我希望能够跨多个实例使用相同的服务器Acme.RtdServer。这肯定是可能的,因为彭博Excel API似乎实现了这一点。有人知道这是如何实现的吗?

EDIT:对RTD()的调用被封装在UDF中:

public object ACME_UDF(string ItemID, string TopicName, bool OtherData = false)
{
    if (string.IsNullOrEmpty(ItemID) || string.IsNullOrEmpty(TopicName))
    return "...";
    try
    {
        return _xlApp.WorksheetFunction.RTD("acme.rtdserver", null, ItemID, TopicName, OtherData); 
    }
    catch (Exception)
    {
        return "Failed to retrieve [" + ItemID + "] with [" + TopicName + "]";
    }
}

谢谢

[似乎无法添加任何评论]。当我试的时候,它说"还有11个……"版本为2010,32位

最新更新