Exemple #1
0
        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);
        }