private void ProcessCandle(CandleSeries series, Candle candle) { // возможно была задержка в получении данных и обработаны еще не все данные if (!_isStarted) { this.GuiAsync(() => IsStarted = true); } _timer.Reset(); _candlesCount++; // ограничиваем кол-во передаваемых свечек, чтобы не фризился интерфейс if (_candlesCount % 100 == 0) { System.Threading.Thread.Sleep(200); } var candleSeries = (CandleSeries)_bufferedChart.GetSource(_candleElement); if (series == candleSeries) { var values = new Dictionary <IChartElement, object>(); lock (_syncRoot) { foreach (var element in _bufferedChart.Elements.Where(e => _bufferedChart.GetSource(e) == series)) { if (_skipElements.Contains(element)) { continue; } element.DoIf <IChartElement, ChartCandleElement>(e => values.Add(e, candle)); element.DoIf <IChartElement, ChartIndicatorElement>(e => values.Add(e, CreateIndicatorValue(e, candle))); } } _bufferedChart.Draw(candle.OpenTime, values); if (series.Security is ContinuousSecurity) { // для непрерывных инструментов всегда приходят данные по одной серии // но инструмент у свечки будет равен текущему инструменту ProcessContinuousSourceElements(candle); } } else { // для индексов будут приходить отдельные свечки для каждого инструмента ProcessIndexSourceElements(candle); } }
public async Task ResetTimerTest() { // Arrange int callbackCalledCount = 0; Task Callback() { Interlocked.Increment(ref callbackCalledCount); return(Task.CompletedTask); } TimeSpan period = TimeSpan.FromSeconds(3); var resettableTimer = new ResettableTimer(Callback, period, null); // Act resettableTimer.Start(); for (int i = 0; i < 5; i++) { await Task.Delay(TimeSpan.FromSeconds(2)); resettableTimer.Reset(); } await Task.Delay(TimeSpan.FromSeconds(4)); // Assert Assert.Equal(1, callbackCalledCount); }
private void AddElement(IChartElement element, CandleSeries candleSeries) { if (!_isLoaded || candleSeries == null) { return; } _changedElements.Add(element); _skipElements.Add(element); _drawTimer.Reset(); }
private void OnChartPanelSubscribeCandleElement(ChartCandleElement element, CandleSeries candleSeries) { _elements.Add(element); _drawTimer.Reset(); }