private void UnSubscribeContinuous(ContinuousSecurity security, MarketDataTypes type) { lock (_continuousSecurities.SyncRoot) { var node = _continuousSecurities.Find(new ContinuousInfo(security, type)); if (node == null) { return; } var diff = node.Value.Elapsed; var curr = node; while (curr != null) { curr.Value.Elapsed += diff; curr = curr.Next; } _continuousSecurities.Remove(node); if (_continuousSecurities.Count == 0) { _connector.MarketTimeChanged -= ConnectorOnMarketTimeChanged; } } }
private void SubscribeContinuous(ContinuousSecurity security, MarketDataTypes type) { lock (_continuousSecurities.SyncRoot) { var info = new ContinuousInfo(security, type); if (_continuousSecurities.Contains(info)) { return; } _continuousSecurities.AddFirst(info); if (_continuousSecurities.Count == 1) { _connector.MarketTimeChanged += ConnectorOnMarketTimeChanged; } } }