/// <summary> /// Startet die Datensammlung asynchron. /// </summary> /// <param name="firstUrl">Das URL der ersten Webseite.</param> /// <param name="hops"> Eine Liste von Zergliedern für jedes erwartetes Hop.</param> /// <param name="contentParser">Injizierter Zerglieder für den Inhalt der am Ende der Hops erreichten Webseite.</param> /// <returns>Eine asynchrone Aufgabe, die die gesamten gesammelten Daten verspricht.</returns> /// <exception cref="ParserException" /> public async Task <IEnumerable <DataType> > CollectDataAsync( Uri firstUrl, IEnumerable <IHyperlinksParser> hops, IHypertextContentParser <DataType> contentParser) { var contents = new ConcurrentQueue <(Uri, string)>(); await CollectContentRecursivelyAsync(firstUrl, hops, contents); var collectedData = new List <DataType>(); foreach ((Uri url, string hypertext) in contents) { IEnumerable <DataType> parsedObjects = WrapCall(() => contentParser.ParseContent(hypertext), url); collectedData.AddRange(parsedObjects); _log?.Info($"Die Zergliederung von {url} hat {parsedObjects.Count()} ergeben."); } return(collectedData); }
public static void Init() { try { var sql = Generator.GenerateSql(typeof(AccountCtlData)); DBHelper.DefaultInstance.ExecuteSql(sql); logger.Info("Init finance db done ..."); logger.Info("Init demo ..."); InitData(); logger.Info("Init demo done ..."); logger.Info("Init AccountCtl data success."); } catch (FinanceException e) { logger.Error(e.Message); } }