private void SubscribeIValueSymbol(IValueSymbol valueSymbol) { _iValueSymbols.Add(valueSymbol); var observer = Observer.Create <Object>(async val => { var message = new SymbolValueMessage() { InstancePath = valueSymbol.InstancePath, Type = valueSymbol.TypeName, Value = val }; //Console.WriteLine(string.Format("{0} Instance: {1}, Value: {2}", DateTime.Now.ToString("HH:mm:ss:fff"), message.InstancePath, val.ToString())); //await _eventAggregator.PublishOnCurrentThreadAsync(message); await _eventAggregator.PublishOnUIThreadAsync(message); }); IDisposable subscription = valueSymbol.WhenValueChanged().Subscribe(observer); // push into dictionary _subscriptions.TryAdd(valueSymbol.InstancePath, subscription); }
public Task HandleAsync(SymbolValueMessage message, CancellationToken cancellationToken) { Info += $"{DateTime.Now.ToString("HH:mm:ss:fff")} {message.InstancePath} {message.Type} {message.Value.ToString()}\n"; return(Task.CompletedTask); }