private void _startTestBt_Click(object sender, RoutedEventArgs e) { _startTestBt.IsEnabled = false; RefreshGuiValues(); DrawAChart(null); if (_drivesListCb.SelectedItem != null && !string.IsNullOrWhiteSpace(_sizeOfFileTb.Text) && _sizeUnitCb.SelectedItem != null && !string.IsNullOrWhiteSpace(_numberOfTestsTb.Text)) { long sizeOfFile = long.Parse(_sizeOfFileTb.Text); long sizeInBytes = 1; try { switch (_sizeUnitCb.SelectedValue.ToString()) { case "B": sizeInBytes = 1 * sizeOfFile; break; case "KB": sizeInBytes = 1024 * sizeOfFile; break; case "MB": sizeInBytes = 1024 * 1024 * sizeOfFile; break; case "GB": sizeInBytes = 1024 * 1024 * 1024 * sizeOfFile; break; } TestSpeed test = new TestSpeed(Drive.Letter, sizeInBytes, int.Parse(_numberOfTestsTb.Text)); #region Background worker BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += Worker_DoWork; worker.ProgressChanged += Worker_ProgressChanged; worker.WorkerReportsProgress = true; worker.RunWorkerCompleted += Worker_Completed; worker.RunWorkerAsync(test); #endregion } catch (Exception ex) { MessageBox.Show($"An error happened while testing in main UI thread\n { ex.Message} "); } } else { MessageBox.Show("Choose parameters."); } }
private void Worker_DoWork(object sender, DoWorkEventArgs e) { try { TestSpeed test = (TestSpeed)e.Argument; test.RunTest(sender); } catch (Exception ex) { MessageBox.Show("An error occured while performing tests in background worker thread.\n\n" + ex.Message + "\n" + ex.StackTrace); } }