Exemplo n.º 1
0
        private void ProcessFile(FileInfo file, int retry = 0)
        {
            DateTime processStart = DateTime.Now;

            try
            {
                if (Globals.VerboseLogging)
                {
                    Logger.Info($"Loading details for file '{file.FullName}'.");
                }

                var  mediaFile  = new Repository.MediaFile(Logger, file, FramesToRemove);
                bool existsInDB = mediaFile.Exists();

                if (mediaFile.Changed > LastScan || !existsInDB)
                {
                    mediaFile.LoadTagData();
                    mediaFile.AddOrUpdate();
                    FilesProcessed++;
                }
                else
                {
                    FilesSkipped++;
                }

                if ((FilesProcessed + FilesSkipped) % int.Parse(ConfigurationManager.AppSettings["ProcessUpdateCounter"] ?? "100") == 0)
                {
                    Logger.Info($"Processed {FilesProcessed + FilesSkipped} files...");
                }
            }
            catch (Exception ex)
            {
                if (retry < 3)
                {
                    retry++;
                    Logger.Info($"Error processing file: {file.FullName}. Error: '{ex.Message}'. Retrying {retry} of 3...");
                    ProcessFile(file, retry);
                }
                else
                {
                    Logger.Error($"Error processing file: {file.FullName}", ex);

                    if (!ex.Message.Contains("An error occurred while starting a transaction on the provider connection"))
                    {
                        Errors.Add(new FileError(ex, file.FullName, $"Error processing file. Error: {ex.Message}"));
                    }
                    else
                    {
                        ScanActionsRetry.Add(() => ProcessFile(file));
                    }
                }
            }

            DateTime processEnd = DateTime.Now;

            if (Globals.VerboseLogging)
            {
                Logger.Info($"File '{file.FullName}' processed in {(processEnd - processStart).TotalMilliseconds} milliseconds.");
            }
        }
Exemplo n.º 2
0
        private void ProcessFile(FileInfo file)
        {
            try
            {
                var mediaFile = new Repository.MediaFile(Logger, file);
                mediaFile.AddOrUpdate();

                FilesProcessed++;
            }
            catch (Exception ex)
            {
                Logger.Error($"Error processing file: {file.FullName}", ex);
                Errors.Add(new FileError(ex, file.FullName, "Error processing file."));
            }
        }