public void Execute(Server server, string severLogsFolder) { var existingFiles = _logFileRepository.GetAllForServer(server.Id).ToDictionary(x => x.Name); var filesOnDisk = Directory.GetFiles(severLogsFolder); Parallel.ForEach(filesOnDisk, GetParallelOptions(), file => { var logFileInfo = new FileInfo(file); if (!existingFiles.TryGetValue(logFileInfo.Name, out var logFile)) { logFile = new LogFile { Name = logFileInfo.Name, ServerId = server.Id }; _logFileRepository.Add(logFile); ParseLogFile(server, logFile, file); } MoveLogFileToCompletedFolder(severLogsFolder, logFileInfo); }); }