private void ScanLoaderCompleted(object sender, RunWorkerCompletedEventArgs e) { ScanLoaderBackgroundWorker backgroundWorker = sender as ScanLoaderBackgroundWorker; SortableBindingList <ScanLib.ScanEntry> results = this.nmapResults.DataSource as SortableBindingList <ScanLib.ScanEntry>; if (backgroundWorker != null && results != null) { if (e.Cancelled) { MessageBox.Show(this , "Scan import canceled." , "Import canceled ..." , MessageBoxButtons.OK , MessageBoxIcon.Information); this.statusMessage.Text = "Import completed"; } else { try { this.cancelWorker.Visible = false; // Add parsed items to DataGridView this.progressBar.Maximum = backgroundWorker.ScanLoader.Count; this.progressBar.Step = 1; this.progressBar.Value = 0; // Report caught exceptions foreach (var exception in backgroundWorker.ScanLoader.Exceptions) { this.LogMessage(exception); } // Update table foreach (ScanLib.ScanEntry item in backgroundWorker.ScanLoader) { results.Add(item); this.progressBar.PerformStep(); } this.statusMessage.Text = "Import completed"; this.UpdateServiceCount(); MessageBox.Show(this , "Scan results import successfully completed." , "Import complete ..." , MessageBoxButtons.OK , MessageBoxIcon.Information); } catch (Exception ex) { this.LogMessage(ex); MessageBox.Show(this , "Loading scan results failed" , "Import failed ..." , MessageBoxButtons.OK , MessageBoxIcon.Error); } } } this.progressBar.Value = 0; this.services.Enabled = true; }
private void loadNmap_Click(object sender, EventArgs e) { var states = this.GetStates(); using (var openFileDialog = new OpenFileDialog()) { try { if (!this.NmapLoaderBackgroundWorker.IsBusy) { openFileDialog.Filter = "Nmap XML Result File (*.xml)|*.*"; openFileDialog.Title = "Open Nmap XML Scan Results"; openFileDialog.Multiselect = true; openFileDialog.FilterIndex = 2; openFileDialog.RestoreDirectory = true; if (openFileDialog.ShowDialog() == DialogResult.OK) { this.services.Enabled = false; this.cancelWorker.Visible = true; this.progressBar.Value = 0; this.progressBar.Maximum = 100; this.statusMessage.Text = "Import started"; var loader = new NmapLoader(openFileDialog.FileNames, states); this.NmapLoaderBackgroundWorker = new ScanLoaderBackgroundWorker(loader); this.NmapLoaderBackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(ScanLoaderCompleted); this.NmapLoaderBackgroundWorker.ProgressChanged += new ProgressChangedEventHandler(ScanLoaderProgressChanged); this.NmapLoaderBackgroundWorker.RunWorkerAsync(); } } } catch (Exception ex) { this.LogMessage(ex); } } }