private async Task LoadSymbolViewModel() { if (symbol == null) { return; } SymbolViewModel = new SymbolViewModel( userAccount.Exchange, exchangeService, chartHelper, orderBookHelperFactory.GetOrderBookHelper(userAccount.Exchange), tradeHelperFactory.GetTradeHelper(userAccount.Exchange), userAccount.Preferences, Logger) { Dispatcher = ViewModelContext.UiDispatcher }; ObserveSymbol(SymbolViewModel); try { await SymbolViewModel.SetSymbol(symbol); SymbolViewModel.IsActive = true; } catch (Exception ex) { TradingViewModelException(ex.ToString(), ex); } }
private void DisposeSymbolViewModel() { if (SymbolViewModel != null) { SymbolViewModel.Dispose(); SymbolViewModel = null; } if (symbolObservableSubscription != null) { symbolObservableSubscription.Dispose(); symbolObservableSubscription = null; } }
private void ObserveSymbol(SymbolViewModel symbol) { var symbolObservable = Observable.FromEventPattern <SymbolEventArgs>( eventHandler => symbol.OnSymbolNotification += eventHandler, eventHandler => symbol.OnSymbolNotification -= eventHandler) .Select(eventPattern => eventPattern.EventArgs); symbolObservableSubscription = symbolObservable.Subscribe(args => { if (args.HasException) { TradingViewModelException(args); } }); }
protected override void OnDisposing() { if (disposed) { return; } symbolsObservableSubscription?.Dispose(); tradeObservableSubscription?.Dispose(); accountObservableSubscription.Dispose(); symbolObservableSubscription?.Dispose(); AccountViewModel.Dispose(); SymbolsViewModel?.Dispose(); TradeViewModel?.Dispose(); SymbolViewModel?.Dispose(); disposed = true; }
private async Task LoadSymbolViewModel() { if (symbol == null) { return; } SymbolViewModel = new SymbolViewModel( userAccount.Exchange, exchangeService, chartHelper, orderBookHelperFactory.GetOrderBookHelper(userAccount.Exchange), tradeHelperFactory.GetTradeHelper(userAccount.Exchange), userAccount.Preferences, Logger) { Dispatcher = ViewModelContext.UiDispatcher }; ObserveSymbol(SymbolViewModel); await SymbolViewModel.SetSymbol(symbol).ConfigureAwait(true); SymbolViewModel.IsActive = true; }