private void SetParams(RankParserParams parametr)
 {
     _metricParser.CF_TF = parametr.CF_TF;
     _metricParser.DA_PA = parametr.DA_PA;
     _timeout            = parametr.TimeOut;
     _streamsCount       = parametr.ThreadCount;
 }
        public async void Parse(RankParserParams parametr)
        {
            _result  = new ConcurrentQueue <string>();
            _domains = new ConcurrentQueue <string>(_csvReaderWriter.ReadFile(parametr.FilePath));
            List <Task> tasks = new List <Task>();

            _pauseToken  = true;
            _cancelToken = true;
            _saver       = true;
            SetParams(parametr);
            StartParsing?.Invoke(_domains.Count, _streamsCount, _timeout);
            _result.Enqueue("Url" + _parser.BuildHeader() + _metricParser.BuildHeader());
            for (int i = 0; i < _streamsCount; i++)
            {
                tasks.Add(startTask());
            }
            await Task.WhenAll(tasks);

            if (_saver)
            {
                if (_csvReaderWriter.Write(_savefilepath, new TextFromListGetter(_result.ToList())))
                {
                    MessageBox.Show("Done");
                }
            }
            ParsingEnd?.Invoke();
            foreach (var item in tasks)
            {
                item.Dispose();
            }
        }