using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ThomsonReuters.Desktop.SDK.DataAccess; using ThomsonReuters.Desktop.SDK.DataAccess.Realtime; using ThomsonReuters.Desktop.SDK.DataAccess.TimeSeries; using ThomsonReuters.Desktop.SDK.DataAccess.TimeSeries.Metadata; using System.Windows.Threading; namespace ConsoleApplication2 { class Program { IRealtimeService realtime; public DispatcherFrame frame; IRealtimeDataRequest request1; static void Main(string[] args) { Program prog = new Program(); prog.init(); prog.run(); } public void run() { List rics = new List(); rics.Add("JPY="); rics.Add("THB="); rics.Add("EUR="); rics.Add("TRI.N1");//Test invalid RIC rics.Add("IBM.N"); foreach (FeedInformation feed in realtime.Feeds) { for (int j = 0; j < rics.Count; j++) { request1 = realtime.SetupDataRequest() .WithRics(rics[j]) .WithFields(new string[] { "BID", "ASK" }) .WithFeed(feed.Name) .OnError(error => RealTimeDataError(feed.Name, error)) .OnDataReceived(update => OnDataUpdate(feed.Name, update)) .OnStatusReceived(status => StatusReceived(feed.Name, status)) .CreateAndSend(); PushFrame(); } } } public void init() { DataServicesFactory.Create("YourAppCode", OnDataServiceCreated); PushFrame(); } public void PushFrame() { Dispatcher.ExitAllFrames(); frame = new DispatcherFrame(); Dispatcher.PushFrame(frame); } private void StopFrame() { frame.Continue = false; } public void RealTimeDataError(string feed, RealtimeDataError error) { Console.WriteLine("### RealTimeDataError: {0} ####", feed); Console.WriteLine("Error: {0}", error.Message); } public void StatusReceived(string feed, InstrumentStateUpdate status) { Console.WriteLine("### StatusReceived: {0} ####", feed); Console.WriteLine("### {0}: {1}", status.Ric, status.InstrumentState.ToString()); if (status.InstrumentState != InstrumentState.Ok) StopFrame(); } public void OnDataServiceCreated(IDataServices dataservices) { Console.WriteLine("OnDataServiceCreated"); realtime = dataservices.Realtime; StopFrame(); } private void OnDataUpdate(string feed, IRealtimeUpdateDictionary update) { Console.WriteLine("### OnDataUpdate: {0} ####", feed); foreach (var record in update) { Console.WriteLine("OnDataUpdate RIC: {0}", record.Key); foreach (var val in record.Value) { Console.WriteLine("{0} : {1}", val.Key, val.Value.Value.ToString()); } } Console.WriteLine(""); StopFrame(); } } }