Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / RunTime / Hosting / SharedConnectionInfo.cs / 1305376 / SharedConnectionInfo.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- #region Using directives using System; using System.Diagnostics; using System.Transactions; using System.Data.Common; using System.Threading; #endregion namespace System.Workflow.Runtime.Hosting { ////// This class keeps the following associated with a Transaction /// - a connection that participates in the transaction. /// - an optional local transaction (DbTransaction) generated from the single-phase-committed Transaction. /// The connection and the local transaction are passed around to different host components to /// do transacted DB work using the shared connection. /// internal sealed class SharedConnectionInfo : IDisposable { readonly DbConnection connection; readonly DbTransaction localTransaction; private bool disposed; private ManualResetEvent handle; #region Constructor ////// Instantiate an opened connection enlisted to the Transaction /// if promotable is false, the Transaction wraps a local /// transaction inside and can never be promoted /// /// /// /// internal SharedConnectionInfo( DbResourceAllocator dbResourceAllocator, Transaction transaction, bool wantPromotable, ManualResetEvent handle) { Debug.Assert((transaction != null), "Null Transaction!"); if (null == handle) throw new ArgumentNullException("handle"); this.handle = handle; if (wantPromotable) { // Enlist a newly opened connection to this regular Transaction this.connection = dbResourceAllocator.OpenNewConnection(); this.connection.EnlistTransaction(transaction); } else { // Make this transaction no longer promotable by attaching our // IPromotableSinglePhaseNotification implementation (LocalTranscaction) // and track the DbConnection and DbTransaction associated with the LocalTranscaction LocalTransaction localTransaction = new LocalTransaction(dbResourceAllocator,handle); transaction.EnlistPromotableSinglePhase(localTransaction); this.connection = localTransaction.Connection; this.localTransaction = localTransaction.Transaction; } } #endregion Constructor #region Accessors internal DbConnection DBConnection { get { return this.connection; } } internal DbTransaction DBTransaction { get { return this.localTransaction; } } #endregion Accessors #region IDisposable Members public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } private void Dispose(bool disposing) { if (!this.disposed) { // // If we're using a LocalTransaction it will close the connection // in it's IPromotableSinglePhaseNotification methods if ((this.localTransaction == null)&&(null != connection)) this.connection.Dispose(); } this.disposed = true; } #endregion } } // 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
- TextMarkerSource.cs
- externdll.cs
- XmlName.cs
- XmlIgnoreAttribute.cs
- Color.cs
- DescendantBaseQuery.cs
- TextRunProperties.cs
- TimeZone.cs
- StrokeFIndices.cs
- ExceptionValidationRule.cs
- RotateTransform3D.cs
- _FtpDataStream.cs
- DataGrid.cs
- LinearGradientBrush.cs
- PassportAuthenticationEventArgs.cs
- DiscriminatorMap.cs
- WorkflowRuntimeServiceElementCollection.cs
- BaseDataList.cs
- RSAPKCS1KeyExchangeFormatter.cs
- RectangleGeometry.cs
- PlainXmlSerializer.cs
- SecurityTokenAuthenticator.cs
- WebPartDisplayModeEventArgs.cs
- Int16Animation.cs
- OrderByBuilder.cs
- MD5.cs
- HwndProxyElementProvider.cs
- Composition.cs
- CrossSiteScriptingValidation.cs
- ImmComposition.cs
- InvariantComparer.cs
- FormCollection.cs
- ConstructorArgumentAttribute.cs
- SqlUtils.cs
- PreProcessInputEventArgs.cs
- PrivilegedConfigurationManager.cs
- TextEmbeddedObject.cs
- _ProxyRegBlob.cs
- WebPartConnectionsEventArgs.cs
- DataServiceRequestArgs.cs
- HttpCacheParams.cs
- LinearGradientBrush.cs
- Menu.cs
- PermissionListSet.cs
- Encoder.cs
- OrderedEnumerableRowCollection.cs
- DataServiceProviderWrapper.cs
- UnknownBitmapDecoder.cs
- DependencyPropertyKey.cs
- HostingEnvironmentException.cs
- PropertyPushdownHelper.cs
- Utils.cs
- SoapReflectionImporter.cs
- DoubleLinkListEnumerator.cs
- DispatchProxy.cs
- DispatcherExceptionEventArgs.cs
- ZipIORawDataFileBlock.cs
- PageRouteHandler.cs
- ImageList.cs
- ImagingCache.cs
- QualifiedCellIdBoolean.cs
- BrowserPolicyValidator.cs
- ECDiffieHellmanCngPublicKey.cs
- FixedSOMContainer.cs
- AuthenticationService.cs
- RequestNavigateEventArgs.cs
- SystemException.cs
- BooleanAnimationUsingKeyFrames.cs
- IntellisenseTextBox.cs
- ButtonChrome.cs
- AssemblyBuilder.cs
- WindowsTitleBar.cs
- TransactionTraceIdentifier.cs
- AnnotationAdorner.cs
- CompensationTokenData.cs
- CompressionTracing.cs
- MSAAEventDispatcher.cs
- DebugView.cs
- TimeSpanValidator.cs
- RelationshipEndCollection.cs
- SqlError.cs
- FixedElement.cs
- StrokeFIndices.cs
- TypefaceCollection.cs
- XmlLinkedNode.cs
- MenuRendererClassic.cs
- Version.cs
- WindowProviderWrapper.cs
- MaskDescriptors.cs
- ListBoxItemWrapperAutomationPeer.cs
- ProtocolsConfigurationHandler.cs
- Collection.cs
- NetSectionGroup.cs
- SmtpLoginAuthenticationModule.cs
- RpcResponse.cs
- HttpServerUtilityBase.cs
- Main.cs
- MdiWindowListItemConverter.cs
- TaskFactory.cs
- RegexCompilationInfo.cs