private static async Task ProcessFile(string file, bool firstFile) { int year = int.Parse(file.Substring(8, 4)); int month = int.Parse(file.Substring(12, 2)); int day = int.Parse(file.Substring(14, 2)); DateTime logDate = new DateTime(year, month, day); Console.WriteLine("\nProcessing File: " + file + $" - { logDate }\n"); using (StreamReader sr = new StreamReader(file)) { while (!sr.EndOfStream) { string line = await sr.ReadLineAsync(); if (line.StartsWith("{")) { _config = JsonConvert.DeserializeObject <Config>(line); Console.WriteLine("Changing config to: " + line + "\n"); continue; } try { Entry entry = new Entry(line, logDate); if (_entries.ContainsKey(entry.Name)) { Entry existing = _entries[entry.Name]; existing.Analyze(entry); } else if (!firstFile) { //If the member didn't exist in the base snapshot lets create a fake 0 EP entry for them so we can still compare Entry newMember = new Entry(entry); newMember.EP = 0; newMember.PR = 0; newMember.GP = _config.BaseGP; newMember.LogDate = newMember.LogDate - TimeSpan.FromDays(7); newMember.Analyze(entry); } _entries[entry.Name] = entry; } catch (Exception e) { Console.WriteLine("Failed to parse line: " + line + " - " + e); } } } }