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
- XmlParserContext.cs
- ConfigurationSectionHelper.cs
- RIPEMD160Managed.cs
- EntityContainer.cs
- HttpTransportElement.cs
- WebPartEditVerb.cs
- CompressionTracing.cs
- TransportListener.cs
- SyndicationSerializer.cs
- EntityDataSourceDesigner.cs
- TaskFormBase.cs
- PropertyBuilder.cs
- CodeMethodMap.cs
- XPathParser.cs
- ResolveResponseInfo.cs
- StatusBar.cs
- ContainerParaClient.cs
- VisualStyleInformation.cs
- MarkupCompilePass2.cs
- BindableAttribute.cs
- ImageMapEventArgs.cs
- ContainerParagraph.cs
- ZipIOCentralDirectoryFileHeader.cs
- OleDbException.cs
- ThreadExceptionDialog.cs
- querybuilder.cs
- ManagedIStream.cs
- FileDialog.cs
- ConfigurationElementCollection.cs
- DataTableTypeConverter.cs
- Version.cs
- OdbcDataAdapter.cs
- LoginCancelEventArgs.cs
- PointAnimation.cs
- configsystem.cs
- dbenumerator.cs
- StorageInfo.cs
- CodeMemberEvent.cs
- Soap.cs
- TypeInitializationException.cs
- SelectingProviderEventArgs.cs
- StringDictionary.cs
- ControlHelper.cs
- KoreanCalendar.cs
- SafeThemeHandle.cs
- NumericPagerField.cs
- MDIControlStrip.cs
- DataGridColumnStyleMappingNameEditor.cs
- ProfileBuildProvider.cs
- InkCollectionBehavior.cs
- DbParameterCollection.cs
- XmlValueConverter.cs
- FreezableCollection.cs
- Point3DKeyFrameCollection.cs
- Ops.cs
- SelectionRangeConverter.cs
- HtmlElement.cs
- CallTemplateAction.cs
- EdgeModeValidation.cs
- RuntimeTransactionHandle.cs
- PathFigureCollectionConverter.cs
- NamespaceEmitter.cs
- SQLSingleStorage.cs
- MSAAWinEventWrap.cs
- PolygonHotSpot.cs
- XmlAutoDetectWriter.cs
- x509utils.cs
- DataGridColumn.cs
- PrePostDescendentsWalker.cs
- HttpHandlerActionCollection.cs
- AuthenticationService.cs
- UIElement3D.cs
- SqlError.cs
- DispatcherHookEventArgs.cs
- EventSinkHelperWriter.cs
- IsolatedStorageFilePermission.cs
- CommandID.cs
- TextWriterTraceListener.cs
- PartialTrustHelpers.cs
- Point3DCollection.cs
- DialogBaseForm.cs
- TypedReference.cs
- FilteredDataSetHelper.cs
- ServicePointManagerElement.cs
- PersonalizationStateInfo.cs
- PieceDirectory.cs
- EventSinkHelperWriter.cs
- Matrix.cs
- DispatcherBuilder.cs
- ManagementClass.cs
- WebPartConnection.cs
- Camera.cs
- ThreadAbortException.cs
- BitmapDecoder.cs
- RestHandler.cs
- FontConverter.cs
- Camera.cs
- XmlSchemaComplexContent.cs
- DesignerFrame.cs
- ListBindingHelper.cs