public Collections GetPlayersCollections(CollectionGeneratorConfiguration cfg, LogCollectionGeneration logger) { int totalUsernames = cfg.Usernames.Count; int processedCounter = 0; var c = new Collections(); _osuApi.ApiKey = cfg.ApiKey; _logger = logger; _logger?.Invoke(StartingProcessing, 0d); _collectionManager.EditCollection(CollectionEditArgs.ClearCollections()); try { foreach (var username in cfg.Usernames) { var collections = GetPlayerCollections(username, cfg.CollectionNameSavePattern, cfg.ScoreSaveConditions); Log(username, ParsingFinished, ++processedCounter / (double)totalUsernames * 100); _collectionManager.EditCollection(CollectionEditArgs.AddOrMergeCollections(collections)); } c.AddRange(_collectionManager.LoadedCollections); _logger?.Invoke(string.Format(ParsingFinished, cfg.Usernames.Count), 100); _logger = null; return(c); } catch (ThreadAbortException) { _logger?.Invoke(Aborted, -1d); return(c); } }