0

我有一个在一个 excel 实例中运行良好的 C# RTDServer。定义如下:

[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 新更新已准备好。此处的一篇 MS 知识库文章建议了进程外 RTDServer 的类似行为。我的实现是一个线程化的进程内 RTDServer。

我希望能够Acme.RtdServer跨多个实例使用同一服务器。这一定是可能的,因为 Bloomberg Excel API 似乎可以实现它。有谁知道如何做到这一点?

编辑:对 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 + "]";
    }
}

谢谢

4

1 回答 1

0

[似乎无法添加任何评论。当我尝试时,它说“还有 11 个……”] 版本是 2010,32 位

于 2013-03-08T14:17:14.073 回答