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);
     }
 }