private void Button_Click_1(object sender, RoutedEventArgs e) { if (((string.IsNullOrWhiteSpace(Path.Text))) || (!Directory.Exists(Path.Text))) { MessageBox.Show("Не задана директория для анализируемых файлов", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (CheckBoxReestr.IsChecked.GetValueOrDefault()) { if (((string.IsNullOrWhiteSpace(ReestrPath.Text))) || (!Directory.Exists(Path.Text))) { MessageBox.Show("Не задана директория для файлов реестра ПО", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } var parameters = new StartingModulesParameters() { Path = Path.Text, ReestrPath = ReestrPath.Text, IsHeuristicEnabled = CheckBoxHeuristic?.IsChecked ?? false }; ProgressWindow progressWindow = new ProgressWindow(parameters); this.Hide(); progressWindow.ShowDialog(); this.Show(); } }
public ProgressWindow(StartingModulesParameters parameters /*string Path, string ReestrPath*/) { InitializeComponent(); SetProgressBarMaximum(ProgressBarCode.File, maxSecondProgress, 0); SetProgressBarMaximum(ProgressBarCode.All, maxAllProgress, 0); var thread = new Thread(() => ExecuteThread(parameters)); thread.SetApartmentState(ApartmentState.STA); thread.Start(); }
public void ExecuteThread(StartingModulesParameters parameters) { // todo: строить список модулей исходя из включенных галочек var modules = new List <IProcessingModule>(); modules.Add(ModuleFactory.CreateCodeBaseProcessingModule(parameters.ReestrPath)); if (parameters.IsHeuristicEnabled) { modules.Add(ModuleFactory.CreateDatabaseHeuristicsModule()); } var progressModule = ModuleFactory.CreateContainer(modules); progressModule.OnProgress += ProgressModuleDisplayHandler; var fileSourceList = new FileSystemSource(parameters.Path).GetFiles().ToList(); var results = progressModule.Execute(fileSourceList); ShowReport(results, fileSourceList); }