/// <summary> /// Called when processing has been completed or aborted. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnComplete(object sender, ShowProgressArgs e) { if (IsDisposed) { return; } if (InvokeRequired == false) { statusBar.Text = e.StatusMessage; if (e.Failed) { textBoxResult.Text = ""; MessageBox.Show(e.StatusMessage, "Operation failed.", MessageBoxButtons.OK, MessageBoxIcon.Error); } textBoxResult.Text = e.FileList; MakeStateTransition(ComputeState.Idle); } else { Computer.ProgressEvent completeHandler = OnComplete; Invoke(completeHandler, sender, e); } }
/// <summary> /// Called periodically while computing. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnProgress(object sender, ShowProgressArgs e) { try { if (InvokeRequired == false) { if (e.StatusMessage.Length > 0) { statusBarText.Text = e.StatusMessage; } else { statusBarText.Text = $"Selected {NumberFormatter.To1024BaseString(e.BytesUsed, 3, "bytes")}, unused space is {NumberFormatter.To1024BaseString(e.BytesTotal - e.BytesUsed, 3, "bytes")} ({NumberFormatter.ToPercentage(e.BytesUsed, e.BytesTotal):f2}%)."; } textBoxResult.Text = e.FileList; } else { Computer.ProgressEvent showProgress = OnProgress; Invoke(showProgress, sender, e); } } catch (ObjectDisposedException) { // User decided to quit e.Cancel = true; } }