private void FillChildsInParallel(IEnumerable <IChangeableData> data, IDataParserHandler parser) { if (data == null || parser == null) { return; } var exceptions = new ConcurrentQueue <Exception>(); Parallel.ForEach(data, ParallelOptions, item => { try { item.Childs = parser.Parce(item.Value); } catch (HtmlRoutineException ex) { logger.Warn(ex.Message); } catch (StopOperatoinException stopEx) { exceptions.Enqueue(stopEx); throw new AggregateException(exceptions); } catch (Exception ex) { exceptions.Enqueue(ex); } }); if (exceptions.Any()) { throw new AggregateException(exceptions); } }
public HtmlCourtsInfoFetcher(IDataParserHandler parser) { Requires.NotNull(parser, "parser"); Parser = parser; Parser.ViabilityObserver = ViabilityObserver; CacelOperation = () => Parser.Cancel(); }
public DistrictsParser(IDataParserHandler successHandler, IDataParserHandler failureHandler) : base(successHandler, failureHandler) { }
public RegionsParser(IDataParserHandler successHandler, IDataParserHandler failureHandler) : base(successHandler, failureHandler) { }
public IDataParserHandler SetNext(IDataParserHandler handler) { _nextHandler = handler; return(handler); }
public DataParserHandlerBase(IDataParserHandler successHandler, IDataParserHandler failureHandler) { Successor = successHandler; Failer = failureHandler; }