private async void ExecuteLongOperation()
        {
            using (var cancellationTokenSource = new CancellationTokenSource())
            {
                var operationMonitor = new WindowOperationMonitor(cancellationTokenSource)
                {
                    Owner = Application.Current.MainWindow
                };
                operationMonitor.Show();

                Exception exception = null;

                try
                {
                    OnBeforeExecute();
                    await ContextAction.ExecutionHandler.ExecutionHandlerAsync(ContextAction.ExecutionContext, cancellationTokenSource.Token);
                }
                catch (TaskCanceledException) { }
                catch (Exception e)
                {
                    exception = e;
                }
                finally
                {
                    OnAfterExecute();
                    operationMonitor.Close();
                }

                if (exception != null)
                {
                    ShowErrorMessage(exception);
                }
            }
        }
示例#2
0
		private async void ExecuteLongOperation()
		{
			using (var cancellationTokenSource = new CancellationTokenSource())
			{
				var operationMonitor = new WindowOperationMonitor(cancellationTokenSource) { Owner = Application.Current.MainWindow };
				operationMonitor.Show();

				Exception exception = null;

				try
				{
					OnBeforeExecute();
					await ContextAction.ExecutionHandler.ExecutionHandlerAsync(ContextAction.ExecutionContext, cancellationTokenSource.Token);
				}
				catch (TaskCanceledException) { }
				catch (Exception e)
				{
					exception = e;
				}
				finally
				{
					OnAfterExecute();
					operationMonitor.Close();
				}

				if (exception != null)
				{
					ShowErrorMessage(exception);
				}
			}
		}
示例#3
0
		private async Task ExportData(IDataExporter dataExporter, ExportOptions exportOptions)
		{
			using (var cancellationTokenSource = new CancellationTokenSource())
			{
				var operationMonitor = new WindowOperationMonitor(cancellationTokenSource) { IsIndeterminate = false };
				operationMonitor.Show();

				var exception = await App.SafeActionAsync(
					async delegate
					{
						using (var exportContext = await dataExporter.StartExportAsync(exportOptions, DataExportHelper.GetOrderedExportableColumns(ResultGrid), _outputViewer.DocumentPage.InfrastructureFactory.DataExportConverter, cancellationTokenSource.Token))
						{
							exportContext.SetProgress(_resultRows.Count, operationMonitor);
							await exportContext.AppendRowsAsync(_resultRows);
							await exportContext.FinalizeAsync();
						}
					});

				operationMonitor.Close();

				var isOperationCanceledException = exception is OperationCanceledException;
				if (exception != null && !isOperationCanceledException)
				{
					Messages.ShowError(exception.Message);
				}
			}
		}