private async void OnLoaded(object sender, RoutedEventArgs e) { if (_operation != null) { Status = await RunOperationAsync(); } }
private async Task <ConsoleWindowStatus> RunOperationAsync() { using (_cts = new CancellationTokenSource()) { try { Status = ConsoleWindowStatus.Running; var result = await _operation(this, _cts.Token); if (result == ExitCodes.Succeeded) { return(ConsoleWindowStatus.Succeeded); } else { return(ConsoleWindowStatus.Failed); } } catch (OperationCanceledException) { this.ReportLine(UserMessages.ConsoleWindow_OperationCancelled); return(ConsoleWindowStatus.Failed); } catch (Exception ex) { this.ReportLine(UserMessages.ConsoleWindow_OperationFaulted); Report(ex.Message); return(ConsoleWindowStatus.Failed); } } }
private void Cancel() { if (Status == ConsoleWindowStatus.Running) { Status = ConsoleWindowStatus.Cancelling; _cts.Cancel(); } }