Пример #1
0
        private void patchAndSaveFile(object sender, RoutedEventArgs e)
        {
            Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();

            dlg.DefaultExt = ".bdf";
            dlg.Filter     = "BDF Files (*.bdf) | *.bdf";

            bool?result = dlg.ShowDialog();

            if (result.HasValue && result.Value)
            {
                if (openedFiles == null || !openedFiles.Any())
                {
                    ;                                           //Not selected files
                }
                workerList.Clear();

                disableButtons();

                BDFFile newFile = new BDFFile();

                BackgroundWorker bw = new BackgroundWorker();
                workerList.Add(bw);

                ProgressBar progressBar = new ProgressBar();


                progressBar.Width  = Double.NaN;
                progressBar.Height = 25.0;

                progressBar.Minimum = 0;

                bindProgressBarWithBDFFile(progressBar, ProgressBar.MaximumProperty, "Size", newFile);
                bindProgressBarWithBDFFile(progressBar, ProgressBar.ValueProperty, "Wrote", newFile);

                bw.DoWork += (obj, args) =>
                {
                    newFile.generateFromFiles(openedFiles);
                    App.Current.Dispatcher.Invoke(new ThreadStart(delegate { this.stackPanel.Children.Add(progressBar); }));
                    newFile.saveToFile(dlg.FileName);
                    App.Current.Dispatcher.Invoke(new ThreadStart(delegate { this.stackPanel.Children.Remove(progressBar); }));
                };

                bw.RunWorkerCompleted += (obj, args) =>
                {
                    tryEnableButtons();
                };

                bw.RunWorkerAsync();
            }
        }
Пример #2
0
        private void patchAndSaveFile(object sender, RoutedEventArgs e)
        {
            Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();

            dlg.DefaultExt = ".bdf";
            dlg.Filter = "BDF Files (*.bdf) | *.bdf";

            bool? result = dlg.ShowDialog();

            if (result.HasValue && result.Value)
            {
                if (openedFiles == null || !openedFiles.Any()) ;//Not selected files

                workerList.Clear();

                disableButtons();

                BDFFile newFile = new BDFFile();

                BackgroundWorker bw = new BackgroundWorker();
                workerList.Add(bw);

                ProgressBar progressBar = new ProgressBar();


                progressBar.Width = Double.NaN;
                progressBar.Height = 25.0;

                progressBar.Minimum = 0;

                bindProgressBarWithBDFFile(progressBar, ProgressBar.MaximumProperty, "Size", newFile);
                bindProgressBarWithBDFFile(progressBar, ProgressBar.ValueProperty, "Wrote", newFile);

                bw.DoWork += (obj, args) => 
                {
                    newFile.generateFromFiles(openedFiles);
                    App.Current.Dispatcher.Invoke(new ThreadStart(delegate { this.stackPanel.Children.Add(progressBar); }));
                    newFile.saveToFile(dlg.FileName);
                    App.Current.Dispatcher.Invoke(new ThreadStart(delegate { this.stackPanel.Children.Remove(progressBar); }));
                };

                bw.RunWorkerCompleted += (obj, args) =>
                {
                    tryEnableButtons();
                };

                bw.RunWorkerAsync();

            }
        }