private async void ScanToolStripMenuItem_Click(object sender, EventArgs e) { foreach (var file in Directory.EnumerateFiles(_appSettings.FolderPath, "*.*", SearchOption.AllDirectories)) { _log.Info($"Select file: {file}"); string hash; using (var md5 = MD5.Create()) { using (var stream = File.OpenRead(file)) { hash = BitConverter.ToString(md5.ComputeHash(stream)) .Replace("-", "") .ToLowerInvariant(); } } _log.Info($"Hash of {file}: {hash}"); if (_storage.IsExists(hash)) { _log.Info($"Файл {file} уже обработан"); continue; } try { var parser = ParserSelector.Select(file); await Task.Run(() => parser.Load()); foreach (var node in parser.Data) { _log.Debug($"Parsing current row: {node.Name}, {node.Sum}"); _taskQueue.Enqueue(() => ExecuteTask(node.Name, string.Empty, node.Sum, file)); } if (!tmrQueue.Enabled) { tmrQueue.Start(); } _storage.AddNode(hash); } catch { Log.Error($"Не удалось открыть файл: {_filePath}"); } } }
private async void ScanToolStripMenuItem_Click(object sender, EventArgs e) { if (!Directory.Exists(_appSettings.FolderPath)) { _log.Error($"Папка {_appSettings.FolderPath} не найдена"); return; } LogManager.ReconfigExistingLoggers(); foreach (var file in Directory.EnumerateFiles(_appSettings.FolderPath, "*.*", SearchOption.AllDirectories)) { _log.Info($"Select file: {file}"); if (!File.Exists(file)) { _log.Error($"Файд {file} не найден"); continue; } string hash; using (var md5 = MD5.Create()) { using (var stream = File.OpenRead(file)) { hash = BitConverter.ToString(md5.ComputeHash(stream)) .Replace("-", "") .ToLowerInvariant(); } } _log.Info($"Hash of {file}: {hash}"); if (_storage.IsExists(hash)) { _log.Info($"Файл {file} уже обработан"); continue; } try { var parser = ParserSelector.Select(file); await Task.Run(() => parser.Load()); var tokenSource = new CancellationTokenSource(); foreach (var node in parser.Data) { _log.Debug($"Parsing current row: {node.Name}, {node.Sum}"); _taskQueue.Enqueue(() => ExecuteTask(node.Name, string.Empty, node.Sum, file, node.Source, tokenSource)); } if (!tmrQueue.Enabled) { tmrQueue.Start(); } _storage.AddNode(hash); } catch { _log.Error($"Не удалось открыть файл: {file}"); } } var target = (FileTarget)LogManager.Configuration.FindTargetByName("errfile_parsed"); target.Flush(exception => { }); target.Dispose(); }