/// <summary> /// Do the moving operation in this method. /// </summary> /// <param name="sender">Sender</param> /// <param name="e">Event argument</param> private void MoveFilesInBackground(object sender, DoWorkEventArgs e) { SelectFilesByOption selection = (SelectFilesByOption)e.Argument; BackgroundWorker worker = sender as BackgroundWorker; switch (selection) { case SelectFilesByOption.All: MoveAll(worker); break; case SelectFilesByOption.Size: MoveSize(worker); break; case SelectFilesByOption.Date: MoveByDate(worker); break; case SelectFilesByOption.Extension: MoveExtensions(worker); break; default: break; } }
/// <summary> /// Display the input control corresponding to the selected option. /// </summary> /// <param name="selection">The selection the user selects.</param> private void DisplaySelectionInput(SelectFilesByOption selection) { switch (selection) { case SelectFilesByOption.Size: u_datePicker.Visibility = Visibility.Collapsed; u_sizeRangeGrid.Visibility = Visibility.Visible; u_extensionGrid.Visibility = Visibility.Collapsed; break; case SelectFilesByOption.Date: u_datePicker.Visibility = Visibility.Visible; u_sizeRangeGrid.Visibility = Visibility.Collapsed; u_extensionGrid.Visibility = Visibility.Collapsed; break; case SelectFilesByOption.Extension: u_datePicker.Visibility = Visibility.Collapsed; u_sizeRangeGrid.Visibility = Visibility.Collapsed; u_extensionGrid.Visibility = Visibility.Visible; break; default: u_datePicker.Visibility = Visibility.Collapsed; u_sizeRangeGrid.Visibility = Visibility.Collapsed; u_extensionGrid.Visibility = Visibility.Collapsed; break; } SetElementFullyVisible(u_moveButton, this); }
/// <summary> /// Run the moving background operation in a background thread. /// </summary> private void RunBackgroundThread() { // Create a background thread and register the appropriate handler methods BackgroundWorker worker = new BackgroundWorker(); worker.WorkerReportsProgress = true; worker.DoWork += MoveFilesInBackground; worker.RunWorkerCompleted += ProgressCompletedHandler; //worker.ProgressChanged += ProgressChangedHandler; // Create a ProgressWindow object m_progressWindow = new ProgressWindow(); m_progressWindow.Owner = this; m_progressWindow.Canceled += ProgressCanceledHandler; // Start the thread in the background and show the ProgressWindow object to user // Catch any thrown exception that is not caught in the background thread try { SelectFilesByOption selection = (SelectFilesByOption)u_selectComboBox.SelectedIndex; worker.RunWorkerAsync(argument: selection); m_progressWindow.ShowDialog(); } catch (Exception ex) { DisplayErrorMessage(ex); m_progressWindow.Canceled -= ProgressCanceledHandler; m_progressWindow.Close(); } }
/// <summary> /// Show the the input control of the selected option. /// </summary> /// <param name="sender">Sender</param> /// <param name="e">Event argument</param> private void SelectionChangedHandler(object sender, SelectionChangedEventArgs e) { SelectFilesByOption selection = (SelectFilesByOption)u_selectComboBox.SelectedIndex; DisplaySelectionInput(selection); }