private static void Collect() { var tasks = new List <Task>(); foreach (var searchCriteria in searchCriterias) { tasks.Add(Task.Run(() => { ConsolePrinter.PrintGettingEventLogData(searchCriteria.LogName.ToString()); List <EventLogData> eventLogs = eventCollector.GetEventLogEntries(searchCriteria).Select(entry => entry.ToEventLogData()).ToList(); ConsolePrinter.PrintEventLogEntries(searchCriteria.LogName.ToString(), eventLogs.Count()); string filePath = GetFilePath(searchCriteria.LogName.ToString()); exportService.Export(eventLogs, filePath); ConsolePrinter.PrintExportedTo(filePath); })); } try { Task.WaitAll(tasks.ToArray()); } catch (AggregateException ae) { ae.Handle((ex) => { if (ex is SystemException) { ConsolePrinter.PrintError(ex); return(true); } return(false); }); } }