public Dictionary<string, Lib.LogTable> Process(DateTime? startDate, DateTime? finishDate, string pattern)
 {
     Stopwatch sw = new Stopwatch();
     sw.Start();
     var dt = DateTime.Now;
     Dictionary<string, Lib.LogTable> result = new Dictionary<string, Lib.LogTable>();
     if (IsLogFiles)
     {
         foreach (var file in LogsFiles)
         {
             result[file] = new Lib.LogTable(file, pattern);
         }
     }
     else
     {
         Dictionary<string, List<string>> LogFiles = new Dictionary<string, List<string>>();
         foreach (var folder in LogsFolders)
         {
             LogFiles[folder] = Directory.GetFiles(folder, "*-????????-????.log")
                 .Where(l => !startDate.HasValue || !finishDate.HasValue || (startDate.HasValue && finishDate.HasValue && l.IsFileDateOk(startDate.Value, finishDate.Value)))
                 .ToList();
             foreach (var file in LogFiles[folder])
             {
                 result[file] = new Lib.LogTable(file, pattern);
             }
         }
     }
     return result;
 }
 public Dictionary<string, Lib.LogTable> Process(DateTime? startDate, DateTime? finishDate, string pattern)
 {
     var dt = DateTime.Now;
     Dictionary<string, List<string>> LogFiles = new Dictionary<string, List<string>>();
     Dictionary<string, Lib.LogTable> result = new Dictionary<string, Lib.LogTable>();
     var tempDir = String.Format(TempFilesDirNamePattern, UserFolder, dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, dt.Millisecond);
     Directory.CreateDirectory(tempDir);
     foreach (var folder in LogsFolders)
     {
         LogFiles[folder] = Directory.GetFiles(folder, "*-????????-????.log")
             .Where(l => !startDate.HasValue || !finishDate.HasValue || (startDate.HasValue && finishDate.HasValue && l.IsFileDateOk(startDate.Value, finishDate.Value)))
             .ToList();
         foreach (var file in LogFiles[folder])
         {
             var dstFileName = tempDir + "\\" + new System.IO.FileInfo(file).Name;
             System.IO.File.Copy(file, dstFileName);
             try
             {
                 result[file] = new Lib.LogTable(dstFileName, pattern);
             }
             finally
             {
                 System.IO.File.Delete(dstFileName);
             }
         }
     }
     System.IO.Directory.Delete(tempDir);
     return result;
 }