Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / WorkflowPersistenceContext.cs / 1305376 / WorkflowPersistenceContext.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities { using System.Collections.Generic; using System.Transactions; using System.Runtime; class WorkflowPersistenceContext { CommittableTransaction contextOwnedTransaction; Transaction clonedTransaction; public WorkflowPersistenceContext(bool transactionRequired, TimeSpan transactionTimeout) : this(transactionRequired, CloneAmbientTransaction(), transactionTimeout) { } public WorkflowPersistenceContext(bool transactionRequired, Transaction transactionToUse, TimeSpan transactionTimeout) { if (transactionToUse != null) { this.clonedTransaction = transactionToUse; } else if (transactionRequired) { this.contextOwnedTransaction = new CommittableTransaction(transactionTimeout); // Clone it so that we don't pass a CommittableTransaction to the participants this.clonedTransaction = this.contextOwnedTransaction.Clone(); } } public Transaction PublicTransaction { get { return this.clonedTransaction; } } public void Abort() { if (this.contextOwnedTransaction != null) { try { this.contextOwnedTransaction.Rollback(); } catch (Exception e) { if (Fx.IsFatal(e)) { throw; } // ---- these exceptions as we are already on the error path } } } public void Complete() { if (this.contextOwnedTransaction != null) { this.contextOwnedTransaction.Commit(); } } // Returns true if end needs to be called // Note: this is side effecting even if it returns false public bool TryBeginComplete(AsyncCallback callback, object state, out IAsyncResult result) { // In the interest of allocating less objects we don't implement // the full async pattern here. Instead, we've flattened it to // do the [....] part and then optionally delegate down to the inner // BeginCommit. if (this.contextOwnedTransaction != null) { result = this.contextOwnedTransaction.BeginCommit(callback, state); return true; } else { result = null; return false; } } public void EndComplete(IAsyncResult result) { Fx.Assert(this.contextOwnedTransaction != null, "We must have a contextOwnedTransaction if we are calling End"); this.contextOwnedTransaction.EndCommit(result); } // We might as well clone the ambient transaction so that PersistenceParticipants // can't cast to a CommittableTransaction. static Transaction CloneAmbientTransaction() { Transaction ambientTransaction = Transaction.Current; return ambientTransaction == null ? null : ambientTransaction.Clone(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GetPageNumberCompletedEventArgs.cs
- XmlSchemaAnnotated.cs
- XomlCompiler.cs
- SpecularMaterial.cs
- EndpointAddressMessageFilter.cs
- DataFormats.cs
- GroupLabel.cs
- MergeLocalizationDirectives.cs
- WebServiceData.cs
- FactoryGenerator.cs
- ContainsRowNumberChecker.cs
- XsltQilFactory.cs
- FormViewPagerRow.cs
- ObjectList.cs
- AxParameterData.cs
- ColumnCollection.cs
- ConfigurationPropertyCollection.cs
- RelationshipFixer.cs
- TextRunCache.cs
- AuthenticationService.cs
- CompressEmulationStream.cs
- XamlInterfaces.cs
- SafeArrayRankMismatchException.cs
- OdbcError.cs
- DebuggerAttributes.cs
- RadioButton.cs
- CodeNamespaceCollection.cs
- EmptyCollection.cs
- PngBitmapEncoder.cs
- ErrorProvider.cs
- SoapExtensionReflector.cs
- SecuritySessionClientSettings.cs
- CollectionViewGroup.cs
- GridViewColumnCollection.cs
- CheckableControlBaseAdapter.cs
- DoubleKeyFrameCollection.cs
- MailWebEventProvider.cs
- PrintSystemException.cs
- ClientSettingsStore.cs
- DataGridViewCellPaintingEventArgs.cs
- BulletDecorator.cs
- Menu.cs
- PassportAuthentication.cs
- UdpDiscoveryEndpointProvider.cs
- RoleService.cs
- EntityDesignerDataSourceView.cs
- SslStreamSecurityUpgradeProvider.cs
- ComProxy.cs
- PropertyDescriptorCollection.cs
- AstTree.cs
- PeerValidationBehavior.cs
- AnnotationComponentManager.cs
- StylusEditingBehavior.cs
- WmiEventSink.cs
- DataGridViewCellStyleConverter.cs
- BitmapCodecInfo.cs
- HttpCacheVaryByContentEncodings.cs
- WebPartAuthorizationEventArgs.cs
- KeyEvent.cs
- Ticks.cs
- PriorityChain.cs
- OledbConnectionStringbuilder.cs
- PhysicalFontFamily.cs
- XmlDocumentSchema.cs
- WebPartAddingEventArgs.cs
- PropertyInformation.cs
- ExpressionEditorAttribute.cs
- PerformanceCounterPermissionAttribute.cs
- CursorConverter.cs
- Task.cs
- IndexedGlyphRun.cs
- QueryLifecycle.cs
- MeasurementDCInfo.cs
- SHA384.cs
- AnimatedTypeHelpers.cs
- TextBreakpoint.cs
- XmlSchemaInferenceException.cs
- NegotiationTokenAuthenticatorStateCache.cs
- UInt16.cs
- TabItem.cs
- DataGridTableStyleMappingNameEditor.cs
- KeyedCollection.cs
- PageRequestManager.cs
- HttpCapabilitiesBase.cs
- CodeConstructor.cs
- ButtonFieldBase.cs
- SafeFreeMibTable.cs
- SerializationInfo.cs
- FilterQueryOptionExpression.cs
- PropertyDescriptorComparer.cs
- WinEventQueueItem.cs
- RotateTransform.cs
- ThreadStateException.cs
- BooleanConverter.cs
- RedBlackList.cs
- DBAsyncResult.cs
- TreeNodeEventArgs.cs
- HwndHost.cs
- Msec.cs
- LinqDataSource.cs