I am having difficulty using the ThomsonReuters.Desktop.SDK.DataAccess API to subscribe to realtime data.
I am writting my own RTD server in Excel using Excel-DNA as I want the ability to define my own update intervals for specific RICs, and create on demand update for a large set of RICS using a button in Excel (so request not subscription). I need this as I have a realtime spreadsheet with lots of calculations that cannot handle all RICS updating live. Also because I do not like the Excel Com addins - they seem buggy and interfere with other addins I have creating Excel crashes.
I have previously tried to work out using the Dispatcher and found it very confussing. It seems to be a not well documented class that is mostly used by WPF.
I have got it to work in a dll using a worker thread but that was for time series data, so the 'Frame' could continue working until the series was downloaded then the Frame.Continue was set to false.
However in a RTD situation with subscriptions, I cannot run the subscriptions in the Excel UI thread and then block it while I PushFrame. So if I subscribe and PushFrame in a worker thread that invokes back to the Excel UI thread to update the cell value, how do I add new requests. I don't want to Frame.Continue = false everytime I get an update to see if there is a new request for data before PushFrame again to continue.
As a test I tried using Frame.Continue = False, then Dispatcher.PushFrame(Frame) in the example app, by putting that code in DataReceived but it didn't work - it just aborted the console app!
I don't understand the use of Dispatcher: I know it is due to the fact that underneath it is a COM library and thus needs to use the Windows MessagePump, but I have spend days and days trying to understand how to use this API properly, and the oversimplified example is useless - most users have requirements beyond a console window.
Is there is a better API for Eikon users in .Net for realtime data?
Thanks for you help in advance, Richard
I think I have resolved my issues. I can set Frame.Continue = false from the callee then when in the looped worker thread dequeue requests then set Frame.Continue = true and PushFrame.
I got stuck in DLL hell for most of the afternoon.