internal override void OnSaveData(CommandInteractionHandler interactionHandler) { base.SavedResults.Clear(); using (CommandExecutionContext commandExecutionContext = this.saverExecutionContextFactory.CreateExecutionContext()) { WinFormsCommandInteractionHandler winFormsCommandInteractionHandler = interactionHandler as WinFormsCommandInteractionHandler; IUIService service = (winFormsCommandInteractionHandler == null) ? null : winFormsCommandInteractionHandler.UIService; commandExecutionContext.Open(service); foreach (SaverTaskProfile saverTaskProfile in this.saverTaskProfileList) { if (base.Cancelled) { break; } if (saverTaskProfile.IsRunnable(base.Row, base.DataObjectStore)) { saverTaskProfile.BuildParameters(base.Row, base.DataObjectStore); try { saverTaskProfile.Runner.ProgressReport += base.OnProgressReport; commandExecutionContext.Execute(saverTaskProfile, base.Row, base.DataObjectStore); } finally { saverTaskProfile.Runner.ProgressReport -= base.OnProgressReport; } base.SavedResults.AddRange(saverTaskProfile.SavedResults); if (base.BreakOnError && !saverTaskProfile.IgnoreException && !saverTaskProfile.IsSucceeded) { break; } } } if (!base.HasWorkUnits || !base.WorkUnits.HasFailures) { if (commandExecutionContext.ShouldReload) { this.pageToReaderTaskMapping.Reset(); } base.DataObjectStore.ClearModifiedColumns(); } } }
internal override void OnReadData(CommandInteractionHandler interactionHandler, string pageName) { if (this.pageToReaderTaskMapping.IsExecuted(pageName)) { return; } if (base.Table.Rows.Count == 0) { base.Table.Rows.Add(base.Table.NewRow()); } else { base.Table = base.Table.Copy(); } using (CommandExecutionContext commandExecutionContext = this.CreateExecutionContextForReader()) { WinFormsCommandInteractionHandler winFormsCommandInteractionHandler = interactionHandler as WinFormsCommandInteractionHandler; IUIService service = (winFormsCommandInteractionHandler == null) ? null : winFormsCommandInteractionHandler.UIService; commandExecutionContext.Open(service); foreach (ReaderTaskProfile readerTaskProfile in this.readerTaskProfileList) { if (readerTaskProfile.IsRunnable(base.Row, base.DataObjectStore) && this.pageToReaderTaskMapping.CanTaskExecuted(pageName, readerTaskProfile.Name)) { readerTaskProfile.BuildParameters(base.Row, base.DataObjectStore); commandExecutionContext.Execute(readerTaskProfile, base.Row, base.DataObjectStore); base.DataObjectStore.UpdateDataObject(readerTaskProfile.DataObjectName, readerTaskProfile.DataObject); base.UpdateTable(base.Row, readerTaskProfile.DataObjectName, true); } } } if (this.pageToReaderTaskMapping.Count == 0) { base.Row.AcceptChanges(); } this.pageToReaderTaskMapping.Execute(pageName); base.DataSource = base.Table; }