Beispiel #1
0
 public void Stop()
 {
     _collector.Stop();
 }
Beispiel #2
0
        private void TaskSpecificProcess()
        {
            _collector.Start();
            _realBlock.Clear();
            _baseBlock.Clear();
            _preBaseBlock.Clear();
            _source.LoadBlock(_baseBlock);
            _source.LoadBlock(_preBaseBlock);
            _listRenderTask.Begin(_realBlock, _baseBlock, _preBaseBlock);
            if (_viewRenderTask != null)
            {
                _viewRenderTask.Begin(_realBlock, _baseBlock, _preBaseBlock);
            }
            if (_statisticTask != null)
            {
                _statisticTask.Start();
            }
            if (_startedCallback != null)
            {
                _startedCallback();
            }


            while (_rendering)
            {
                int index  = _realBlock.Length;
                int length = Math.Min(_realBlock.Capacity, CollectStep);
                length = _collector.CollectPoints(_realBlock, length);
                if (length == 0)
                {
                    _rendering = false;
                    break;
                }
                bool needNewList, needNewView = false;
                needNewList = _listRenderTask.RenderRealPoints(length);
                if (_viewRenderTask != null)
                {
                    needNewView = _viewRenderTask.RenderRealPoints(length);
                }
                if (_statisticTask != null)
                {
                    _statisticTask.Statistics(_baseBlock, _realBlock, index, length);
                }
                if (_scrollTask != null && _scrollTask.IsEnable)
                {
                    _scrollTask.Scroll(_statisticTask.StatisticResult.Count);
                }
                Debug.Assert(!_realBlock.IsFull || needNewList);
                if (_realBlock.IsFull)
                {
                    _file.WriteBlock(_realBlock);
                    _realBlock.Clear();
                    var tb = _baseBlock;
                    _baseBlock    = _preBaseBlock;
                    _preBaseBlock = tb;
                    _preBaseBlock.Clear();
                    _source.LoadBlock(_preBaseBlock);
                    _listRenderTask.RenderBasePointsBlock(_preBaseBlock);
                    if (_viewRenderTask != null)
                    {
                        _viewRenderTask.RenderBasePointsBlock(_preBaseBlock);
                    }
                }
                if (needNewList)
                {
                    _listRenderTask.PrepareRenderItem(_realBlock);
                }
                if (_viewRenderTask != null && needNewView)
                {
                    _viewRenderTask.PrepareRenderItem(_realBlock);
                }
            }

            _collector.Stop();
            _listRenderTask.Finish();
            if (_viewRenderTask != null)
            {
                _viewRenderTask.Finish();
            }
            if (_statisticTask != null)
            {
                _statisticTask.Stop();
            }
            _file.WriteBlock(_realBlock);
            if (_stopedCallback != null)
            {
                _stopedCallback();
            }
        }