我有一个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新的更新已准备就绪。
MS KB文章here表明了进程外RTDServers的类似行为。
我的实现是一个线程化的进程内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 + "]";
}
}
感谢
答案 0 :(得分:0)
[似乎无法添加任何评论。当我尝试它时说“还有11个......”]版本是2010年,32位