private static bool HandleEndEnlist(IAsyncResult result) { PersistenceContext.AssociateKeysAsyncResult asyncState = (PersistenceContext.AssociateKeysAsyncResult)result.AsyncState; bool flag = false; if (!asyncState.persistenceContext.directory.TryAddAssociations(asyncState.persistenceContext, asyncState.keysToAssociate, asyncState.persistenceContext.keysToAssociate, asyncState.applicationKeys ? asyncState.persistenceContext.keysToDisassociate : null)) { lock (asyncState.persistenceContext.ThisLock) { asyncState.persistenceContext.ThrowIfDisposedOrNotOpen(); } throw Fx.AssertAndThrow("Should only fail to add keys in a race with abort."); } if (asyncState.persistenceContext.directory.ConsistencyScope == DurableConsistencyScope.Global) { if ((asyncState.persistenceContext.keysToAssociate.Count == 0) && ((asyncState.persistenceContext.keysToDisassociate.Count == 0) || !asyncState.applicationKeys)) { return(asyncState.AfterUpdate()); } if (asyncState.persistenceContext.store == null) { return(flag); } SaveWorkflowCommand command = new SaveWorkflowCommand(); foreach (InstanceKey key in asyncState.persistenceContext.keysToAssociate) { command.InstanceKeysToAssociate.Add(key.Value, key.Metadata); } if (asyncState.applicationKeys) { foreach (InstanceKey key2 in asyncState.persistenceContext.keysToDisassociate) { command.InstanceKeysToFree.Add(key2.Value); } } IAsyncResult result3 = null; using (asyncState.PrepareTransactionalCall(asyncState.transaction)) { result3 = asyncState.persistenceContext.store.BeginExecute(asyncState.persistenceContext.handle, command, asyncState.timeoutHelper.RemainingTime(), asyncState.PrepareAsyncCompletion(handleEndExecute), asyncState); } return(asyncState.SyncContinue(result3)); } return(asyncState.AfterUpdate()); }
private static bool HandleEndExecute(IAsyncResult result) { PersistenceContext.AssociateKeysAsyncResult asyncState = (PersistenceContext.AssociateKeysAsyncResult)result.AsyncState; asyncState.persistenceContext.store.EndExecute(result); return(asyncState.AfterUpdate()); }