private void CheckDirectory(DirectoryMonitorSettings monitorSetting) { Task.Run(async() => { var option = monitorSetting.IsRecursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; var files = Directory.EnumerateFiles(monitorSetting.Path, "*", option); var exts = Settings.GetImportableMovieExtensions(); foreach (var file in files) { if (isShutdown) { break; } if (exts.Contains(Path.GetExtension(file).ToLower())) { await movieDispatcher.ImportMovie(file, Movies); } } }); }
private void AddDirectoryMonitor(string path) { var normalizedPath = Util.NormalizePath(path); var paths = Settings.DirectoryMonitors.Select(dm => Util.NormalizePath(dm.Path)).ToList(); if (paths.Contains(normalizedPath)) { logger.Information($"{path}は監視ディレクトリとして登録済みです。"); } else { logger.Information($"{path}を監視ディレクトリとして追加しました(設定画面から解除できます)。"); var monitorSetting = new DirectoryMonitorSettings() { Path = path }; App.Current.Dispatcher.Invoke(() => { Settings.DirectoryMonitors.Add(monitorSetting); }); CheckDirectory(monitorSetting); } }