void AnalysisTransactionManager_AfterCommandComplete(object sender, TransactionCommandResultEventArgs e) { if (e.Connection == this.Connection) { if (this.Dispatcher.CheckAccess()) { this.IsEnabled = OlapTransactionManager.HasPendingChanges(this.Connection);// !e.Succeess; } else { this.Dispatcher.BeginInvoke(() => this.IsEnabled = OlapTransactionManager.HasPendingChanges(this.Connection)); } } }
void OlapDataLoader_DataLoaded(object sender, DataLoaderEventArgs e) { // Exception if (e.Error != null) { LogManager.LogError(this, e.Error.ToString()); return; } // Exception or Message from Olap-Service if (e.Result.ContentType == InvokeContentType.Error) { LogManager.LogError(this, e.Result.Content); return; } if (e.Result != null) { String connectionId = String.Empty; if (e.Result.Headers.Contains(InvokeResultDescriptor.CONNECTION_ID)) { Header connection_header = e.Result.Headers[InvokeResultDescriptor.CONNECTION_ID]; if (connection_header != null) { connectionId = connection_header.Value; } } if (connectionId == Connection) { // Commit or Rollback Transaction MdxQueryArgs query_args = e.UserState as MdxQueryArgs; if (query_args != null) { if (query_args.Type == QueryTypes.CommitTransaction || query_args.Type == QueryTypes.RollbackTransaction) { if (e.Result.ContentType == InvokeContentType.UpdateResult) { List <String> results = XmlSerializationUtility.XmlStr2Obj <List <String> >(e.Result.Content); if (results != null) { var errors = results.Where(res => !String.IsNullOrEmpty(res)); StringBuilder sb = new StringBuilder(); //if (errors.Count() == 0) // AnalysisTransactionManager.CloseTransaction(Connection); //else //{ foreach (var error in errors) { sb.AppendLine(error); } if (!String.IsNullOrEmpty(sb.ToString())) { LogManager.LogError(this, sb.ToString()); } //} // В случае ошибки считаем что транзакция закрыта. И кэш чистим. OlapTransactionManager.CloseTransaction(Connection); } } } } } } }